In questa lezione svilupperemo un algoritmo per il calcolo del massimo, cioè del valore più grande, dei numeri pari e dispari.
Inserire N numeri interi e determinare il massimo dei numeri pari e di quelli dispari.
Realizziamo l’algoritmo in modo tale da inserire sia numeri positivi che negativi.
Innanzitutto dichiariamo le variabili necessarie:
N – La quantità di numeri da inserire.
n – Rappresenta i numeri da inserire di volta in volta.
i – Il contatore utilizzato nel ciclo for.
max_p – Questa variabile contiene il massimo tra tutti i valori pari.
max_d – La variabile che contiene il valore massimo dei numeri dispari.
conta_p – Il contatore dei numeri pari, se non si inseriscono numeri pari lo impostiamo a 0.
conta_d – Il contatore dei numeri dispari, se non si inseriscono numeri dispari lo impostiamo a 0.
Dopo aver dichiarato le variabili chiediamo quanti numeri vogliamo inserire, cioè il valore della variabile N. Quindi facciamo un controllo dell’input per far in modo di inserire solo valori maggiori di zero.
Successivamente chiediamo di inserire il primo numero e controlliamo se è pari. Se lo è assegniamo a max_p il valore di n e portiamo conta_p a 1 e conta_d a 0.
Se invece il numero è dispari assegniamo a max_d il valore di n e portiamo conta_d a 1 e conta_p a 0.
Poi con un ciclo for chiediamo i numeri rimanenti e per ciascun numero chiediamo se è pari o dispari. Controlliamo anche il valore dei contatori (conta_p e conta_d) per capire se è la prima volta che inseriamo un numero pari o dispari e quindi comportarci di conseguenza.
Dopo con un if controlliamo il valore dei contatori per visualizzare in output il messaggio opportuno.
Ecco dunque l’algoritmo in C++ per il calcolo dei numeri pari e dei dispari, così come l’ho pensato:
#include <iostream>
using namespace std;
int main() {
int N, n, i, max_p, max_d, conta_p, conta_d;
do {
cout << "Quanti numeri vuoi inserire?: ";
cin >> N;
} while (N <= 0);
cout << "Inserisci un numero: ";
cin >> n;
if (n % 2 == 0) {
max_p = n;
conta_p = 1;
conta_d = 0;
} else {
max_d = n;
conta_d = 1;
conta_p = 0;
}
for (i = 0; i < N - 1; i++) {
cout << "Inserisci un numero: ";
cin >> n;
if (n % 2 == 0 && conta_p == 1) {
if (n > max_p) {
max_p = n;
}
} else if (n % 2 == 0 && conta_p == 0) {
max_p = n;
conta_p = 1;
} else if (n % 2 != 0 && conta_d == 1) {
if (n > max_d) {
max_d = n;
conta_d = 1;
}
} else {
max_d = n;
}
}
if (conta_p == 1 && conta_d == 1) {
cout << "Pari\t" << max_p << endl << "Dispari\t" << max_d;
} else if (conta_p == 1 && conta_d == 0) {
cout << "Pari\t" << max_p << endl << "Non hai inserito dispari!";
} else {
cout << "Non hai inserito numeri pari!" << endl << "Dispari\t" << max_d;
}
return 0;
}
Questa è solo una possibile soluzione all’algoritmo per il calcolo del massimo dei pari e dei dispari, proponete pure la vostra e discutiamone assieme.
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++