Logo Hardware.com.br
quehajaluis
quehajaluis Novo Membro Registrado
1 Mensagem 0 Curtidas

Uma pequena dúvida em C++ (while)

#1 Por quehajaluis 11/04/2016 - 09:17
Bom dia, eu fiz um programinha simples em C++ que tem o objetivo de ler várias idades até eu digitar uma com valor 0. Depois falar qual a maior e a menor idade. Meu problema ta sendo que a "menor" ta sendo sempre 0 e eu ja tentei várias condições. Vou colocar o programa aqui pra ver se alguém vê meu erro.
[code=C]
#include
using namespace std;

int main()
{
int maior, menor, i, idade;
maior = 0;
menor = 0;



while (idade != 0)
{
cout << "Digite a idade: ";
cin >> idade;

if(idade != 0)
{
if (idade > maior)
maior = idade;

if (idade < menor)
menor = idade;
}
}

cout << "A maior idade e: "<< maior< cout << "E a menor idade e: "<< menor<
system("pause>>null");
return 0;

}
[/code]

Obrigado desde já!
DiguinDeveloper
DiguinDevelo... Super Participante Registrado
313 Mensagens 148 Curtidas
#2 Por DiguinDevelo...
11/04/2016 - 10:04
Bom, pela lógica a primeira idade informada acaba sendo a menor e a maior ao mesmo tempo, você poderia criar um contador para identificá-la assim:
[code=c++]
// ...
int contador = 0;

while (idade != 0) {
cout <<"Digite a idade: ";
cin >> idade;

if (contador == 0) {
menor = idade;
maior = idade;
}

// ... prossegue...
contador++;
}
[/code]

Outra coisa, esse if é desnecessário, já que você usa no while...
[code=c++]
if(idade !=0)
[/code]
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#4 Por esquiloesper...
11/04/2016 - 20:52
Em PA - Projeto de Algoritmos - é ensinado o trato com a lógica, que na grande maioria das vezes é muito melhor que o fluxo contínuo de dados.

A solução apontada por @tpcvasco funciona, porque o erro foi iniciar "menor" com o valor "zero".
Mas um outro engano foi não ter usado ELSE; afinal, fazer isto evita a comparação desnecessária no caso da primeira já ter sido verdadeira.

"Um exemplo para este caso"

::
1) Criar um método externo para a captura de dados;
2) Usar o comparador SE/SENÃO


[code=c]
#include
using namespace std;

int idade;

void getIdade() {
cout << "Digite a idade: ";
cin >> idade;
}

int main()
{
getIdade();
int menor = idade, maior = menor;

while (idade != 0) {

if (idade > maior)
maior = idade;
else if (idade < menor)
menor = idade;

getIdade();
}

cout << "A maior idade e: "<< maior< cout << "E a menor idade e: "<< menor<
return 0;
}
[/code]
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal