In questa lezione propongo un’esercitazione sul while e do-while in C++, in modo da imparare meglio ad utilizzare entrambi i cicli.
Primo esercizio – Esercitazione sul while e do-while in C++
Leggere una sequenza di numeri reali, determinare quanti valori sono interi, cioè senza la parte decimale ed effettuarne il conteggio di entrambi. Terminare la lettura quando si incontra un valore uguale a 9999.
Per risolvere questo algoritmo innanzitutto dichiariamo le variabili che ci servono:
float n – Rappresentano i numeri che di volta in volta inserirò.
int interi = 0 – Il contatore dei numeri interi.
int decimali = 0 – Il contatore dei numeri decimali.
Dopo aver fatto ciò, diamo un messaggio in output che spiega come terminare il programma.
Dunque realizziamo un ciclo do while, che termina quando la condizione n!=9999 diventa falsa. All’interno del ciclo inserisco un numero e controllo se corrisponde al numero intero n con l’operatore di casting. Se tale condizione è vera allora incremento il contatore degli interi, altrimenti incremento il contatore dei decimali.
Al termine visualizzo quanti numeri decimali e quanti interi sono stati inseriti.
Ecco dunque il codice completo.
#include <iostream>
using namespace std;
int main() {
float n;
int interi = 0, decimali = 0;
cout << "Inserisci dei numeri, digita 9999 per terminare l'immissione!" << endl;
while (true) {
cout << "Inserisci un numero: ";
cin >> n;
if (n == 9999) {
break;
}
if (n == int(n)) {
interi++;
} else {
decimali++;
}
}
cout << "Interi: " << interi << endl;
cout << "Decimali: " << decimali << endl;
return 0;
}
Adesso provate voi a risolvere lo stesso esercizio con il while e provate a comparare i due metodi.
Secondo esercizio
Continuiamo la nostra esercitazione sul while e do-while in C++, proponendo un altro esercizio.
Leggere da tastiera un numero imprecisato di coppie di numeri interi. Terminare la lettura quando almeno uno dei due termini risulta uguale a zero. Contare le coppie che hanno il prodotto multiplo di un numero intero K.
Realizziamo questo algoritmo con il while e lascio a voi la realizzazione con il do while per comparare i due metodi.
Abbiamo bisogno delle seguenti variabili:
int a, b – Rappresentano le coppie di numeri che di volta in volta inserirò.
int k – Rappresenta l’intero per cui occorre calcolare se il prodotto della coppia è un suo multiplo.
int count = 0 – Il contatore dei numeri multipli dell’intero k.
int p – La variabile che contiene il prodotto delle coppie.
Dopo aver dichiarato le variabili, procediamo a prendere in input i dati necessari. Dunque, visto che utilizziamo il while, occorre prendere in input una coppia di numeri. Poi impostiamo la seguente condizione: while (a != 0 && b != 0) cioè finché a e b sono diversi da 0, continuo ad inserire i numeri, faccio il prodotto e controllo se questo è multiplo di k. Se è multiplo allora incremento la variabile i.
Infine visualizzo in output il risultato ottenuto.
Ecco dunque il codice completo:
#include <iostream>
using namespace std;
int main() {
int k;
int count = 0;
cout << "Inserisci il multiplo: ";
cin >> k;
int a, b;
cout << "Inserisci il primo numero: ";
while (cin >> a) {
cout << "Inserisci il secondo numero: ";
if (!(cin >> b)) {
break; // Se l'input non è un numero, esci dal ciclo
}
if (a == 0 || b == 0) {
break; // Se uno dei numeri è zero, esci dal ciclo
}
int p = a * b;
if (p % k == 0) {
count++;
}
cout << "Inserisci il primo numero: ";
}
cout << "Multipli di " << k << " sono " << count << endl;
return 0;
}
Come vi dicevo sviluppate adesso voi lo stesso algoritmo con il ciclo do-while. Quale secondo voi è la soluzione migliore?
Questa è solo una semplice esercitazione sul while e do-while in C++, nelle prossime lezioni faremo altri esempi.
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++