|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
|
[c] problema stupidissimo
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:
Codice:
#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; } Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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: Codice:
if (corrente > maggiore1) { maggiore2 = maggiore1; maggiore1 = corrente; } else if (corrente > maggiore2) maggiore2 = corrente; ![]()
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:34.