Salve a tutti! Sto cominciando da poco a studiare il c++ tramite il Deitel. Mi sono fermato all'esercizio in cui si richiede di trovare i due numeri maggiori data una serie di numeri (10) tramite ciclo while. Sono riuscito a risolvere l'esercizio senza inizializzare a 0 le variabili largest e largest2 (troppo facile l'esercizio, altrimenti
), in modo da supportare anche i numeri negativi. Può essere corretto il ragionamento usato nel seguente listato?
Numero.h
Codice PHP:
// Dichiarazione classe
class Numero
{
public:
void maxNum(void);
};
Numero.cpp
Codice PHP:
// Definizione classe
#include <iostream>
#include <iomanip>
#include "Numero.h"
using namespace std;
void Numero::maxNum(void)
{
int counter = 1;
double number;
double largest;
double largest2;
while(counter <= 10)
{
cout << "Inserisci numero: ";
cin >> number;
if(counter == 1)
{
largest = number; // il primo numero è sicuramente il più grande essendo unico
} else if(number > largest) { // se un numero è maggiore di largest, effettua uno "scalo"
largest2 = largest;
largest = number;
// al secondo turno, ci sono due numeri, uno maggiore e uno minore (che sarà largest2)
// assegno largest2 anche nel caso in cui number sia maggiore di largest 2 ma minore di
// largest
} else if((counter == 2 && number < largest) || (number > largest2 && number < largest)) {
largest2 = number;
}
counter++;
}
cout << "Numero maggiore: " << setprecision(2) << fixed << largest << endl;
cout << "Secondo numero maggiore: " << setprecision(2) << fixed << largest2 << endl;
return;
}
main.cpp
Codice PHP:
/* TROVA I DUE NUMERI MAGGIORI TRA GLI IMPUT INSERITI */
#include <iostream>
#include <cstdlib>
#include "Numero.h"
using namespace std;
int main()
{
Numero x;
x.maxNum();
system("PAUSE");
return 0;
}
(Nota: il programma funziona, almeno per quanto io abbia provato. Voglio sapere solo se il ragionamento da me usato è corretto).
Grazie a tutti e