PDA

View Full Version : [c] problema stupidissimo


D4rkAng3l
16-01-2006, 10:10
Devo scrivere un programma che chiede 15 interi e visualizza il primo ed il secondo numero maggiori a non mi funziona...cioè il primo amggiore lo dà correttamente ma il secondo no...il codice è questo:


#include <stdio.h>
#include <stdlib.h>

int main(){
int contatore, corrente;
int maggiore1 = 0;
int maggiore2 = 0;

printf("Inserire il primo valore:\n");
scanf("%d", &corrente);
maggiore1 = corrente; // Il primo valore immesso è anche il maggiore

for(contatore=1; contatore<15; contatore++){
printf("Inserire un altro valore:\n");
scanf("%d", &corrente);

if(corrente > maggiore1)
maggiore1 = corrente;
else if(corrente < maggiore1 && corrente > maggiore2)
maggiore2 = corrente;

}

printf("Maggiore1: %d", maggiore1);
printf("Maggiore2: %d", maggiore2);

system("PAUSE");
return 0;
}



che c'è che non và?

Grazie

andbin
16-01-2006, 10:33
Ciao, ad occhio direi che è sbagliato l'algoritmo. Si dovrebbe usare un sistema "a scalamento". Se trovi un valore maggiore di maggiore1, devi giustamente metterlo in maggiore1 ma prima mettere quest'ultimo in maggiore2.

Tradotto in codice risulterebbe una cosa del genere:
if (corrente > maggiore1)
{
maggiore2 = maggiore1;
maggiore1 = corrente;
}
else if (corrente > maggiore2)
maggiore2 = corrente;

Naturalmente, spero di non sbagliarmi. ;)