Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davyd Darlan

estrutura de repetição WHILE

Recommended Posts

Olá pessoal! boa tarde, sou novo aqui no forum do Imaster sou estudante de sistema de informações e estou começando com à linguagem C++. Trago a vocês um probleminha que venho enfrentado com a estrutura de repitação WHILE. para começar criei um algoritmo para um problema no qual ele armazena 5 números e compara qual o maior e o menor dos números digitados. O que acontece é que estou trabalhando apenas com uma váriavel chamada número, e não compreendo como faço para comparar estes cinco números sendo que eu tenho apenas uma váriavel. Sei que a estrutura de repitição me fornece a possibilidade de está criado uma sequência de uma mesma ação desejada ex: digite um número, dai organizando tudo posso fazer com que essa mesma mensagem se repita várias vezes, fazendo com que o usuario possa digitar 5 números ou seja quanto for, mas não consigo encontrar uma forma para comparar esses cinco valores com apenas uma váriavel.

 

main()

{

int numero,x,menor=0,maior;

for(x=1;x<=5;x++)

{

printf("Digite um numero: ");

scanf("%d",&numero);

maior=numero;

menor=numero;

/* condicional */ if(numero>maior)

{

maior=numero;

}

if(numero<menor)

{

menor=numero;

}

}

printf("\n");

printf("O maior numero e: %d\n",maior);

printf("O menor numero e: %d",menor);

getch();

}

 

Desde já agradeço a todos que possam me ajudar a compreender este problema que venho infrentado, acredito que deve ser uma questão de semântica que estou tendo problema :unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Davyd, não entendi se você se confundiu ou sei lá, mas a estrutura de repetição que você está usando é FOR, e não WHILE.

O seu código como um todo está quase certo. O erro acontece dentro da estrutura de repetição quando você diz que a variavel MAIOR e MENOR recebem o número digitado. Fazendo isso você estara sempre dizendo para o computador que o maior é aquele numero, o mesmo acontece com o menor.

 

Segue o código com a implementação correta:

 

main () {
int numero, x, menor, maior;

       // Maior recebe 0, assim o primeiro numero que o usuario digitar sera considerado o maior, e depois para os numeros seguintes, a verificação sera feita tendo este como base, e não mais o 0
maior = 0;

       // Mesma coisa acontece com o menor, mas ao inves de receber 0, ele recebe um numero alto para que o primeiro seja menor que este ...
menor = 99999;

for (x = 1; x <= 5; x++) {
	printf("Digite um numero: ");
	scanf("%d", &numero);

	if (numero >= maior) {
		maior = numero;
	} 

	if (numero <= menor) {
		menor = numero;
	}
}

printf("\n");
printf("O maior numero e: %d\n",maior);
printf("O menor numero e: %d",menor);
}

 

Espero que você tenha entendido. Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Israel,

 

No seu código. Nos primeiros números digitados maior e menor serão iguais.

Talvez uma estrutura:

if(CONDIÇÃO) {

}else {

}

 

Fosse uma solução mais adequada. Ou utilizar um vetor de int para armazenar os valores e processá-los mais tarde.

 

Davyd,

 

O código que você postou é C e não C++. Embora sejam compatíveis, as duas linguagens tem grandes diferenças.

 

E uma dica, quando postar códigos use a

TAG CODE

assim irá manter a identação do código e a sua organização. Facilitando para que outros usuários do forum posso ajudá-lo.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw pessoal suas dicas foram muito importantes ficaram muito bem claras! Agradeço à ajuda de todos! tenha um bom dia! :clap: Ah realmente me confundi com a estrutura de repetição While, na verdade coloquei for mesmo! Israel Laurensi, e GBecker é verdade mesmo ainda tenho que me familiarizar com o que é c e c++ as diferenças são minimas mas de suma importância pra mais a frente não evitar fúturos erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.