Comecei semana passada com o Visualg, e já estou dando cabeçada.
Peguei esse exercício na web:
“Escreva um programa que solicita 10 números ao usuário, através de um laço while, e ao final mostre qual destes números é o maior.”
E escrevi isso:
algoritmo "semnome"
// Função :
// Autor :
// Data : 30/05/2019
// Seção de Declarações
var
num,cont,maior,menor:inteiro
inicio
// Seção de Comandos
cont<-1
enquanto cont<10 faca
escreval("Digite 10 números aleatoriamente")
leia(num)
maior<-num
menor<-num
cont<-cont+1
escreval("Digite 10 números aleatoriamente")
leia(num)
se num>maior entao
maior<-num
fimse
se num<menor entao
menor<-num
fimse
cont<-cont+1
fimenquanto
escreval("O número maior é ",maior," e o número menor é ",menor)
fimalgoritmo
Testei digitando de 1 a 10.
A parte do número maior até que funcionou, mas o número menor está dando o 9.
Simplesmente não consigo entender porque não está dando certo.
Você não pode fazer o maior<-num e nem menor<-num porque na hora do teste “se” ele vai testar por exemplo 9 > 9 e 9 < 9 entao as variaveis maior e menor irão conter o valores digitados
@guilherme-borges
Não entendi.
Na entrada do processamento, com o primeiro número digitado, as variáveis “maior” e “menor” vão receber o mesmo valor, porque é o primeiro número, não tem com o que comparar.
A partir do segundo número digitado, é feita uma comparação, se o número digitado for maior que a variável “maior” então essa variável assume esse valor (o do número digitado).
A mesma coisa com a variável “menor”.
Ainda não consegui entender o meu erro.
Faça o teste começando com o valor 10 e vai até 1 você vai perceber que a variavel a maior irá receber o valor do ultimo número digitado ou seja 1, então você não pode no começo do “enquanto” sobreescrever a variável com o valor digitado porque você quer guardar o maior valor independente da ordem.
Hummm …
Então acho que entendi.
Se fosse um intervalo fechado, eu colocaria os dois extremos.
Dessa forma, “menor” começaria com 0 e “maior” começaria com 10, por exemplo.
Bom acho que entendi o erro, agora falta achar a solução.
Valeu, obrigado pela força.
Um abraço!
@guilherme-borges
kkk … “entregou a paçoca” é ótimo, to passando mal de tanto rir aqui.
Mas vou te dizer, eu sou tão cabeçudo que nem com o cara escrevendo pra mim eu ainda não sei se entendi.
Mas vou, como você disse, quebrar a cabeça até entender.
Valeu, gente!
Sem querer ser chato, mas não conseguindo evitar de ser porque eu já nasci assim.
Mas o seu algorítimo não diz qual é o maior e qual é o menor.
Vou tentar completar ele aqui e ver se dá certo.
Demorou mas agora eu acho que entendi.
A lógica é a seguinte, eu não estava amarrando as comparações ao primeiro número digitado, dessa forma, como o meu amigo Guilherme tentou me explicar, mas eu sou muito burro pra entender, os números acabavam sendo comparados com eles mesmos.
Dessa forma, o maior número seria sempre o último número digitado e o menor seria sempre o penúltimo.
Acho que é isso, né?
Bloco de citação
Tu viu que só modifiquei uma parte do algoritmo né?
Eu sou meio lerdo pra entender as paradas, achei que vinha o algorítimo inteiro, só pra eu rodar e ver se deixo de ser burro e aprendo.
Valeu, gente, vou encerrar esse post.
Abraço a todos os envolvidos.
Eu também estou tentando aprender a programar pelo YouTube.
Só que eu estou que nem cego no meio de um tiroteio, estou atirando pra todos os lados mas não estou acertando nada.
Isso se chama desespero.
Preciso me acalmar e me concentrar em uma direção.
Estava seguindo essa playlist:
Vou voltar a seguir e retomar esse curso.
Boa sorte!
Galera não estou entendendo o pq funciona o menor e o maior com esse codigo?
sem ele funciona só o maior… eu faço a leitura dele mas não consigo encaixar na logica… se cont for igual a 1 então o maior recebe o numero e o menor recebe o numero tbm…
Quando o programa inicia, ainda não existe maior e menor, correto?
Logo o primeiro número informado, ou seja (cont = 1), passa a ser considerado ao mesmo tempo sendo o maior número e também o menor número, afinal, só existe ele até então!
Quando mais números são informados na sequência, ou seja (cont > 1), fazemos a verificação se o número que foi informado é maior que o número que foi considerado como maior anteriormente, e da mesma forma fazemos esta verificação para o menor.
Eu estava com a mesma dúvida o porque ele não aceitava o menor, aceitava apenas o maior e essa explicação simples me fez entender que o primeiro número é os dois, vlw