Jump to content

Postagens Recomendadas

Postado

Sou estudande de programação e estou com um problema, caso alguém possa me dar uma luz, agradeço desde já.
O problema é que no código abaixo está dando erro de sintaxe na linha 27 "se vet[cont1] < vet[cont2] entao"

Já tentei colocar parenteses, colocar espaços, tirar os espaços e mesmo assim não consegui rodar

 

algoritmo "semnome"
var

vet:vetor[0..9] de inteiro
ale,op,cont1,cont2,troca:inteiro

inicio

para cont1 de 0 ate 9 faca
     op <- randi(2)
        escolha op
                caso 0
                     ale <- randi(30) * -1
             caso 1
                     ale <- randi(100)
        fimescolha
     vet[cont1] <- ale
fimpara

escreval("Os números gerados são esses abaixo!")
para cont1 de 0 ate 9 faca
     escreval(vet[cont1])
fimpara

para cont1 de 0 ate 9 faca
     para cont2 de cont1+1 ate 10 faca
          se vet[cont1] < vet[cont2] entao
             troca <- vet[cont2]
             vet[cont2] <- vet[cont1]
             vet[cont1] <- troca
          fimse
     fimpara
fimpara

escreval("A ordem descrescente é:")
para cont1 de 0 ate 9 faca
     escreval(vet[cont1])
fimpara

fimalgoritmo

  • Solução
Postado

Olá tudo bem?

Fiz algumas correções de endentações no seu código e corrigi a linha que estava: 

"para cont1 de 0 ate 9 faca
     para cont2 de cont1+1 ate 10 faca"
 

deixei:

"para cont1 de 0 ate 9 faca
      para cont2 de cont1+1 ate 9 faca"

Assim ele não vai quebrar a iteração dos seus vetores.
Segue o exemplo corrigido:

 

algoritmo "semnome"
var
   vet: vetor[0..9] de inteiro
   ale, op, cont1, cont2, troca: inteiro

inicio
   para cont1 de 0 ate 9 faca
      op <- randi(2)
      escolha op
         caso 0
            ale <- randi(30) * -1
         caso 1
            ale <- randi(100)
      fimescolha
      vet[cont1] <- ale
   fimpara

   escreval("Os números gerados são esses abaixo!")
   para cont1 de 0 ate 9 faca
      escreval(vet[cont1])
   fimpara

   para cont1 de 0 ate 9 faca
      para cont2 de cont1+1 ate 9 faca
         se vet[cont1] < vet[cont2] entao
            troca <- vet[cont2]
            vet[cont2] <- vet[cont1]
            vet[cont1] <- troca
         fimse
      fimpara
   fimpara

   escreval("A ordem descrescente é:")
   para cont1 de 0 ate 9 faca
      escreval(vet[cont1])
   fimpara

fimalgoritmo

 

Espero ter ajudado!

  • Curtir 1
  • 7 months later...
Postado
Em 21/09/2023 at 15:05, Lucas CIavatto Silva disse:
vet:vetor[0..9] de inteiro

O vetor vai de 0 até 9.

 

Em 21/09/2023 at 15:05, Lucas CIavatto Silva disse:
para cont1 de 0 ate 9 faca
     para cont2 de cont1+1 ate 10 faca

Mas o código está instruindo ir até o 10. Aí programa quebra, já que vai tentar acessar uma posição que não existe.

 

 

Em 29/09/2023 at 10:12, ThiagoAlves disse:
para cont1 de 0 ate 9 faca
      para cont2 de cont1+1 ate 9 faca

Só uma correçãozinha:

   para cont1 de 0 ate 8 faca
      para cont2 de cont1+1 ate 9 faca

No caso, o cont1 vai até a penúltima posição (tamanho do vetor menos 1), para ser comparada com a última posição. Obs.: na execução não vai muda em nada, já que o para interno não executaria, pois ao somar mais 1 já daria 10, que é maior que 9.

  • Curtir 1

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...