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 i=0 – Il contatore dei numeri interi.

int d=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 i=0, d=0;
	
	cout<<"Inserisci dei numeri, digita 9999 per terminare l'immissione!"<<endl;
	
	do{
	   cout<<"Inserisci un numero: ";
	   cin>>n;
	   if(n==int(n))
		i++;
	   else
		d++;
	}while(n!=9999);
	
	cout<<"Interi: "<<i-1<<endl<<"Decimali: "<<d;
	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 i=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 a,b,p,k,i=0;
	
	cout<<"Inserisci il multiplo: ";
	cin>>k;
	
	cout<<"Inserisci il primo numero: ";
	cin>>a;

	cout<<"Inserisci il secondo numero: ";
	cin>>b;
	
	while (a!=0 && b!=0) {
		p=a*b;
		if(p%k==0)
			i++;
		cout<<"Inserisci il primo numero: ";
		cin>>a;
		cout<<"Inserisci il secondo numero: ";
		cin>>b;
	}
	
	cout<<"Multipli di "<<k<<" sono "<<i<<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++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++