Una serie di esercizi molto gettonati per aiutare i principianti a comprendere l’uso dei cicli, le condizioni per farli arrestare e l’annidamento.
In ognuno dei seguenti frammenti di codice, è riportato un commento che illustra il risultato che si vuole ottenere a schermo.
#include <iostream>
using namespace std;
/*
Disegna un triangolo rettangolo come il seguente:
*
**
***
****
*****
*/
int main()
{
//il primo ciclo regola le righe
for (int riga=0; riga < 6; riga++)
{
for (int stella = 0; stella < riga; stella++)
{
cout << '*';
}
cout << endl;
}
getchar();
return 0;
}
Analogo esercizio ma stavolta con i numeri progressivi. Ad ogni riga ricomincia la numerazione.
#include <iostream>
using namespace std;
/*
Disegna un triangolo rettangolo come il seguente:
1
12
123
12345
123456
*/
int main()
{
//il primo ciclo regola le righe
for (int riga=0; riga < 6; riga++)
{
for (int stella = 0; stella < riga; stella++)
{
cout << stella + 1;
}
cout << endl;
}
return 0;
}
Analogo esercizio ma stavolta con i numeri progressivi. Ad ogni riga non ricomincia la numerazione ma un contatore complessivo viene aumentato ad ogni stampa tra riga e riga. E’ stata aggiunta una finezza, una funzione setw che fa uno spazio fisso, un padding in gergo, di 3 caratteri così da distanziare al meglio le varie cifre. Va aggiunta la libreria iomanip in alto.
#include <iostream>
#include <iomanip>
using namespace std;
/*
Disegna un triangolo rettangolo come il seguente:
1
2 3
4 5 6
7 8 9 10
11 12 13 14
*/
int main()
{
int contatore = 1;
//il primo ciclo regola le righe
for (int riga=0; riga < 6; riga++)
{
for (int stella = 0; stella < riga; stella++)
{
cout << std::setw (3) << contatore ;
//cout << contatore;
contatore++;
}
cout << endl;
}
return 0;
}
Altro esempio leggermente più complesso è costruire un triangolo isoscele. Il trucco sta solo nel capire che ci vogliono due cicli, uno che stampa gli spazi vuoti ed uno come quello precedente che stampa gli asterischi o numeri progressivi riga/totale. In questo esempio stampiamo 5 righe. Se si volesse inserire un valore diverso, basta modificare il valore iniziale della variabile nrighe o farlo leggere, ad esempio, da tastiera/input.
#include <iostream>
using namespace std;
/*
Disegna un triangolo rettangolo come il seguente:
*
* *
* * *
* * * *
*/
int main()
{
int nrighe = 5;
//il primo ciclo regola le righe
for (int riga=0; riga <= nrighe; riga++)
{
//stampo gli spazi iniziali per centrare la punta
for (int stella = riga; stella < nrighe ; stella++)
{
cout << ' ';
}
//stampo gli asterischi per ogni riga
for (int stella = 0; stella < riga ; stella++)
{
cout << '*' <<' ';
}
cout << endl;
}
return 0;
}
Ultima modifica 13 Dicembre 2022