Ir ao conteúdo
  • Cadastre-se
EvandroT

Visualg não continua o código

Recommended Posts

Fiz um código simples para mostrar três números em ordem decrescente, o visualg mostra só o primeiro e "não lê" o resto do código:

algoritmo "2.2 Pag 46"
// Função : Algoritmo que leia três valores e moestre-os em ordem decrescente
// Autor :
// Data : 10/4/2016
// Seção de Declarações
var
A, B, C:inteiro
inicio
// Seção de Comandos

escreval ("Digite o primeiro valor")
leia (A)
escreval ("Digite o segundo valor")
leia (B)
escreval ("Digite o terceiro valor")
leia (C)
se (A > B) e (A > C) então
   escreval (A)
senao
   se (B > A) e (B > C) então
      escreval (" ", B)
   senao
      escreval (" ", C)
   fimse
fimse
   se (B < C) e (B < A) então
      se (C > A) então
         escreval (A, B)
      senao
         escreval (C, B)
      fimse
   fimse


 

Obrigado pela atenção.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EvandroT   ele lê o código, mas esses se e senão não estão funcionando do jeito certo não.  Melhor usar vetores para isso.  Então acrescentei essas linhas aí no seu código.   Tente assim:

Algoritmo "2.2 Pag 46"
var
A, B, C,d:inteiro
vet    : vetor[1..3] DE inteiro
inicio
//escreval ("Digite o primeiro valor")
//leia (A)
//escreval ("Digite o segundo valor")
//leia (B)
//escreval ("Digite o terceiro valor")
//leia (C)
para a de 1 ate 3 faca
  escreval("digite o ",a," valor")
  leia (vet[a])
fimpara
//se (A > B) e (A > C) então
//   escreval (A)
//senao
//   se (B > A) e (B > C) então
//      escreval (" ", B)
//   senao
//      escreval (" ", C)
//   fimse
//fimse
//   se (B < C) e (B < A) então
//      se (C > A) então
//         escreval (A, B)
//      senao
//         escreval (C, B)
//      fimse
//   fimse
para b de 1 ate 3 faca
  para c de b ate 3 faca
    se vet[b] > vet[c] então
      d := vet[b]
      vet[b] := vet[c]
      vet[c] := d
    fimse
  fimpara
fimpara
limpatela
escreval("Escrevendo Em Ordem Decescente")
para b de 3 ate 1 passo -1 faca
  escreval("VALOR ",vet[b])
fimpara
Fimalgoritmo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos.

 

@devair1010, só pedimos que evite dar uma uma "resposta pronta" para o usuário, ok? recomendamos que estimule o próprio usuário a implementar as sugestões... :)

 

 

 

Vou tentar complementar...

 

1) Utilizando variáveis simples

@EvandroT, em relação ao seu código original, você está utilizando variáveis individuais, daí precisaria revisar as sentenças das suas estruturas de seleção (dos se), assim como sugerido por @devair1010. Essas estruturas de "se"s devem abranger todas as possibilidades, ou seja, quais são os casos possível em relação a essas 3 variáveis? por exemplo: "Uma delas maior", "Duas delas maiores (iguais)", "As três iguais" etc. Após, criar os se de forma que todas as formas sejam tratadas... Uma forma de verificar e testar é utilizando o conceito de "teste de mesa"!

 

2) Utilizando vetores

Uma forma também interessante de verificar o maior é deixar os valores em ordem decrescente, ou seja, daí o primeiro será o maior... claro que nesse caso também será necessário verificar se o seguintes são iguais, pois pode haver empate! Essa técnica está maios ou menos apresentada no código de @devair1010 na postagem acima.

 

A primeira etapa seria ler os dados inserindo no vetor (cada posição do vetor, seria uma variáveis, só que acessível mais facilmente, utilizando um valor de posição).

 

A segunda, seria "ordenar esse vetor", utilizando um Algoritmo de ordenação. Recomendam-se o Bubble Sort, creio que seja o mais famoso e de fácil entendimento e implementação. Se não me engano é o utilizando no código acima... (de qualquer sorte, o código precisa ser revisado, tem um pequeno errinho lá).

 

***

 

Em fim, o código acima já tem uma boa base de como pode se basear o seu código, apenas sendo necessário revisar o método de ordenação, ou seja, entendo que seria necessário compreendê-lo um pouco mais a fundo caso venha querer utilizá-lo (e até mesmo corrigir um pequeno errinho que tem lá.)

 

No aguardo.

 

 

 

 

 

 

 

 

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Devair e Simon por ajudarem, confesso que o meu código ficou um pouco confuso e pouco prático. Gostei muito das soluções indicadas, me ajudaram a consegui fazer o código "rodar" :

 

algoritmo "2.2 Pag 46"
// Função : "Algoritmo que leia três valores e moestre-os em ordem decrescente"
// Autor :
// Data : 10/4/2016
// Seção de Declarações
var
A, B, C:inteiro
inicio
// Seção de Comandos

escreval ("Digite o primeiro valor")
leia (A)
escreval ("Digite o segundo valor")
leia (B)
escreval ("Digite o terceiro valor")
leia (C)
se (A = B) ou (A = C) ou (B = C) então
   escreval ("valores iguais")
senao
   se (A > B) e (A > C) então  //A é o maior
      se (B > C) então
         escreval (A, B, C)
      senao
           escreval(A, C, B)
      fimse
   fimse
   se (B > A) e (B > C) então //B é o maior
      se (A > C) então
         escreval (B, A, C)
      senao
           escreval (B, C, A)
      fimse
   fimse
   se (C > A) e (C > B) então //C é o maior
      se (B > A) então
         escreval (C, B, A)
      senao
           escreval(C, A, B)
      fimse
   fimse
fimse

fimalgoritmo

Obrigado pela ajuda!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @EvandroT,

 

Quase isso...

 

Agora é fazer testes de mesa e verificando se bate com o desejado, caso não, teve verificar e corrigir.

 

Exemplo de valores para A, B e C.

- Todos os valores diferentes;

- Um maior e os outros dois iguais;

- Dois maiores e um menor.

 

Inicialmente, você pode inserir qualquer valor, ex.:

 

- 1, 2, 3; (deverá exibir 3 2 1)

- 2, 1, 1; (deverá exibir 2 1 1)

- 1, 2, 2. (deverá exibir 2 2 1)

Respectivamente...

 

Após está certo, precisa também verificar as outras possibilidade, ou seja, trocando os números de ordem...

 

 

No aguardo.

 


 

 

 

adicionado 2 minutos depois

PS: o código tá bem organizado!!! só precisa de alguns ajustes.

PS2: essa algoritmo está utilizando o princípio 1) que citei lá em cima, caso depois queira tentar fazer pelo 2), estamos aqui tentar ajudar também.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×