Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

mayk leandro

Aprendendo

Mensagens Recomendadas

mayk leandro

Não consigo encontrar o erro neste algoritimo, toda vez que executo, ele me dá o maior número corretamente, porém o segundo número, é sempre 0, alguém pode me ajudar??

Este algoritimo exibe o maior número e o segundo maior númeor numa sequência de 10 númeors inteiros quaisquer.

#include <stdio.h>

int main ()
{
int num,maior,maior2,contador;

printf("digite 10 números inteiros aleatóriamente\n");
contador = 1;
maior = 0;
maior2 = 0;

while( contador <= 10 )
{
	scanf("%d", &num);
	contador++;

	if( num > maior)
	{
		maior = num;

	}	
	if(num != maior && num > maior2)
	{
		maior2 = num;

	}

}

printf("o maior é: %d\n",maior);	

printf("o segundo maior é: %d\n",maior2);


return 0;
}

Editado por apocsantos
tag code + geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

vais fazer este "exercício":

- para os seguintes dados de entrada:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

- escreve numa folha de papel os valores da seguintes variáveies, nos momentos que irei dizer no código:

> num

> maior

> maior2

> contador

#include <stdio.h>

int main ()
{
 int num,maior,maior2,contador;

 printf("digite 10 números inteiros aleatóriamente\n");

 contador = 1;
 maior = 0;
 maior2 = 0;

 // <--- agora (momento 1)

 while( contador <= 10 
 {
   scanf("%d", &num);
   contador++;

   // <--- agora (momento 2)

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

   // <--- agora (momento 3)

   if(num != maior && num > maior2)
   {
     maior2 = num;
   }

   // <--- agora (momento 4)
 }

 // <--- agora (momento 5)

 printf("o maior é: %d\n",maior);	
 printf("o segundo maior é: %d\n",maior2);

 return 0;
}

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mayk leandro

Muito obrigado, por responder, mas ainda não estou entendo o porque com a sequência 1,2 ... 10, não funciona, mas com algumas sequências de números aleatórios funciona '-'...

de qualquer forma agradeço por ter perdido um pouco do seu tempo tentando me ajudar.

tenho certeza que é um erro de lógica n osegundo "if", vou pensar mais um pouco..

Editado por mayk leandro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

como disse, o primeiro passo para perceber o erro é fazer o que te disse : pega numa filha de papel e num lápiz a aponta os valores

caso não tenhas papel e lápiz (e estou a ser sarcástico aqui), podes simplesmente fazer output atravé sdo printf ...

#include <stdio.h>

int main ()
{
 int num,maior,maior2,contador;

 printf("digite 10 números inteiros aleatóriamente\n");

 contador = 1;
 maior = 0;
 maior2 = 0;

 printf("antes do ciclo >> num : %d | maior : %d | maior2 : %d | contador : %d\n", num, maior, maior2, contador);

 while( contador <= 10 
 {
   scanf("%d", &num);
   contador++;

   printf("antes da primeira comparacao >> num : %d | maior : %d | maior2 : %d | contador : %d\n", num, maior, maior2, contador);

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

   printf("antes da segunda comparacao >> num : %d | maior : %d | maior2 : %d | contador : %d\n", num, maior, maior2, contador);

   if(num != maior && num > maior2)
   {
     maior2 = num;
   }

   printf("final do ciclo >> num : %d | maior : %d | maior2 : %d | contador : %d\n", num, maior, maior2, contador);
 }

 printf("final >> num : %d | maior : %d | maior2 : %d | contador : %d\n", num, maior, maior2, contador);

 printf("o maior é: %d\n",maior);     
 printf("o segundo maior é: %d\n",maior2);

 return 0;
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.