Jump to content

Problema no VisualG


Ir para a Solução Solucionado por ThiagoAlves,

Postagens Recomendadas

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

Link to comment
Compartilhe em outros sites

  • Solu√ß√£o

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
Link to comment
Compartilhe em outros sites

  • 7 months later...
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
Link to comment
Compartilhe em outros sites

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...