Estrutura Se no visualg

10 respostas Resolvido
visualgalgortimo
G

Oi gente!
Então, eu comecei faz pouquíssimo tempo a estudar algoritmos pelo canal do professor Gustavo Guanabara. Estou tendo dificuldade para mostrar o menor valor digitado pelo usuário. O programa repete 4x, quando coloco o primeiro valor sendo o menor, no final ele mostra 0, ele só me mostra o menor valor quando colocado a partir da terceira repetição. alguém pode me ajudar? queria saber como escrever esse código da maneira correta!!

eu enviei uma imagem para vocês verem o código e também o programa. Obrigada desde já!

10 Respostas

J

Tenta fazer algo nesse sentido:

Se contador = 1 entao
    	maior <- reall
    	menor <- reall    	
Senao
    Se reall > maior entao
    	maior <- reall
    FimSe	

    Se reall < menor entao
    	menor <- reall
    FimSe
FimSe
G

Nenhuma das duas formas funcionaram :sob:

F

Eu não entendi muito bem, o seu programa serve para mostrar o menor valor inputado pelo usuário, é isso?

G

sim! quero mostrar o maior e menor valor que o usuário digitou

F

Acho que entendi. O primeiro valor que “menor” recebe é zero (inicialização). Comece com um número alto. Em Java, se faz assim:

public static void main(String[] args) {
int menorNumero = 1000;
int maiorNumero = 0;
Scanner scan = new Scanner(System.in);
    for (int i = 0; i < 4; i++) {
      int foo =  scan.nextInt();

      if(foo > maiorNumero){
          maiorNumero = foo;
      }
      if (foo < menorNumero){
          menorNumero = foo;
      }

    }
    System.out.println("O maior valor é:" + maiorNumero);
    System.out.println("O menor valor é:" + menorNumero);
}

Portanto, a lógica é:
Dado a varíavel menor (iniciando em 9999), tudo que for menor que ela terá seu valor atribuido a ela passando assim a ser o menor número. A lógica se aplica para o maior, também.

Logo, imagine que entrarei com os números 10, 20, 30 e 40. Funcionará assim:

1º MOMENTO: maiorNumero = 0, menorNumero = 1000
entrada:10 (MAIOR que maiorNumero), (MENOR que menorNumero) 2 CONDIÇÕES VERDADEIRAS

2ºMOMENTO: maiorNumero = 10, menorNumero = 10
entrada: 20 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA

3ºMOMENTO: maiorNumero = 20, menorNumero = 10
entrada: 30 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA

4ºMOMENTO: maiorNumero = 30, menorNumero = 10
entrada: 40 (MAIOR que maiorNumero), (MAIOR que menorNumero) 1 CONDIÇÃO VERDADEIRA

SAÍDA FINAL:
maiorNumero = 40
menorNumero = 10

Espero que dê pra esclarecer :slight_smile:

J

Mas não são duas formas, eu coloquei uma única forma!
Como você implementou?

G

Eu vim perceber depois que era um código só! olhei muito rápido, deveria ter parado pra entender ele antes de “jogar” no visualg, o resultado foi o mesmo. muuuuito obrigada mesmo assim!

J

Eu testei o código aqui e funciona!

Como você implementou o algoritmo?

G

estou escrevendo algo errado ?

J
Solucao aceita

Essa parte aqui está no lugar errado:

contador <- contador + 1

Percebe que se incrementar o contador antes do teste lógico o mesmo não vai ser alimentado como deveria, esse trecho do código tem que ficar após o teste lógico, antes do fim do laço de repetição.

Criado 29 de janeiro de 2019
Ultima resposta 29 de jan. de 2019
Respostas 10
Participantes 3