|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2008
Messaggi: 40
|
[C++/Identificazione due numeri interi maggiori] Il programma non li identifica
Ciao a tutti,
sono sempre alle prese con la mia bibbia di c++ con gli esercizi senza soluzione ![]() L'esercizio richiesto è apparentemente semplice: digita dieci interi ed evidenzia i due interi maggiori digitati. I valori 1 e 2 non si possono in nessun caso digitare. Per ore e ore ho riguardato il codice ![]() Ringrazio anticipatamente chi riuscirà a darmi una mano!!!! Codice: [ // Esercizio 419.cpp : definisce il punto di ingresso dell'applicazione console. #include "stdafx.h" #include<iostream> using std::cin; using std::cout; using std::endl; int _tmain(int argc, _TCHAR* argv[]) { return 0; } int main() { int counter = 1; int number = 0; int largest1 = 0; int largest2 = 0; cout << "inserisci un numero intero: " ; cin >> number; while ( counter <= 10) { if ( number == 1) { while (number == 1) { {cout << "Inserisci un valore valido: "; cin >> number;} while (number == 2) {cout << "Inserisci un valore valido: "; cin >> number;} } } if ( number == 2) { while (number == 2) { {cout << "Inserisci un valore valido: "; cin >> number;} while (number == 1) {cout << "Inserisci un valore valido: "; cin >> number;} } } if (number > largest1) { largest2 = largest1; largest1 = number; } else if (number > largest2) { largest2 = number; } else {counter += 1; cout << "inserisci un numero intero: " ; cin >> number;} } cout << "I due numeri interi maggiori inseriti sono: " << largest1 << " e " << largest2 << endl; return 0; } ] Ultima modifica di unslee : 28-06-2008 alle 11:58. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
L'hai fatta troppo complicata!
![]() Scrivo direttamente qui (modificando il tuo codice) senza testare: Codice:
#include<iostream> using namespace std; int main(void) { int counter = 1; int number = 0; int largest1 = 0; int largest2 = 0; while ( counter <= 10) { // Continua a chiedere i numeri se <= 2 do { cout << "Inserisci il " << counter << "o numero (diverso da 1 e 2): "; cin >> number; } while (number <= 2); // Se non ti piace puoi cambiare questa condizione counter++; // E' importante il >= altrimenti rischi di avere 2 numeri uguali in output if (number >= largest1) largest1 = number; else if (number > largest2) largest2 = number; } cout << "I due numeri interi maggiori inseriti sono: " << largest1 << " e " << largest2 << endl; return 0; } |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jun 2008
Messaggi: 40
|
Purtroppo non ci sono ancora. Nel manuale il do non l'ho studiato ancora ecco perché per evitare 1 e 2 ho inserito dei sottocicli di while (che in output funzionano perfettamente). La mia perplessità sta nella logica matematica che governa questo costrutto:
Codice: [ if (number > largest1) { largest1 = largest2; largest1 = number; } else if (number > largest2) { largest2 = number; } ] In questa maniera dovrei potermi portare avanti le variabili con i valori maggiori man mano inseriti. Se provo ad inserire >= l'inserimento dei valori si blocca. Non riesco a trovare il problema. Effettivamente in output mi da valori uguali. Grazie a tutti anticipatamente per l'aiuto che vorrete darmi. |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Jun 2008
Messaggi: 40
|
Problema risolto!
Il problema era nel costrutto if...else nidificato. Infatti avevo sbagliato ad inserire l'ultima condizione else seguita dall'aumento del contatore e dalle altre istruzioni. Tolto l'else il programma gira correttamente. Di seguito il codice corretto: Codice: [ // Esercizio 419.cpp : definisce il punto di ingresso dell'applicazione console. #include "stdafx.h" #include<iostream> using std::cin; using std::cout; using std::endl; int _tmain(int argc, _TCHAR* argv[]) { return 0; } int main() { int counter = 1; int number = 0; int largest1 = 0; int largest2 = 0; cout << "inserisci un numero intero: " ; cin >> number; while ( counter <= 10) { if ( number == 1) { while (number == 1) { {cout << "Inserisci un valore valido: "; cin >> number;} while (number == 2) {cout << "Inserisci un valore valido: "; cin >> number;} } } if ( number == 2) { while (number == 2) { {cout << "Inserisci un valore valido: "; cin >> number;} while (number == 1) {cout << "Inserisci un valore valido: "; cin >> number;} } } if (number > largest1) { largest2 = largest1; largest1 = number; } else if (number > largest2) { largest2 = number; } counter += 1; cout << "inserisci un numero intero: " ; cin >> number; } cout << "I due numeri interi maggiori inseriti sono: " << largest1 << " e " << largest2 << endl; return 0; } ] |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:40.