Esercitiamoci con i for annidati, al fine di approfondire l’argomento.
Primo esercizio sui for annidati
Realizzare un programma in C++, che visualizzi 6 righe dove ciascuna riga contiene i numeri da 1 a 6, come da esempio sotto:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Realizzare questo algoritmo è piuttosto semplice.
Innanzitutto inizializziamo le due variabili contatore i e j e la costante n.
Poi realizziamo i due cicli for annidati e per ogni iterazione del ciclo esterno eseguiamo un ciclo interno da 1 a 6, che di volta in volta stampa il valore di j.
#include <iostream>
using namespace std;
int main() {
int i, j, n;
n = 6;
// Stampare una tabella di numeri da 1 a n per n righe
for (i = 1; i <= n; i++) {
for (j = 1; j <= n; j++) {
cout << "\t" << j;
}
cout << endl;
}
return 0;
}
Modifichiamo adesso il programma proponendo un secondo esempio.
Secondo esempio
Realizziamo un programma in C++, che visualizzi 6 righe così come da esempio:
1 2 3 4 5 6
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
Innanzitutto dichiariamo le variabili i, j ed n. Dopo utilizziamo i due cicli for annidati. Il primo lo facciamo partire da 0 fino ad n-1, mentre il secondo da j ad n-i, così ogni volta sommiamo i + j.
Stampiamo così il risultato ad ogni iterazione del ciclo interno.
Ecco di seguito la possibile soluzione:
#include <iostream>
using namespace std;
int main() {
int i, j, n;
n = 6;
// Stampare una tabella di numeri crescenti da i+1 a n per n righe
for (i = 0; i < n; i++) {
for (j = 1; j <= n - i; j++) {
cout << "\t" << j + i;
}
cout << endl;
}
return 0;
}
Terzo esempio
Variamo l’esercizio precedente, producendo l’output come da esempio:
1 2 3 4 5 6
2 3 4 5 6 +
3 4 5 6 + +
4 5 6 + + +
5 6 + + + +
6 + + + + +
Cioè facciamo in modo da far apparire un simbolo al posto dei caratteri mancanti. Basta modificare il ciclo interno impostando j<=n e all’interno del ciclo controllare se j<=n-i allora stampare j+i, altrimenti stampare il carattere +.
Ecco dunque il codice di esempio:
#include <iostream>
using namespace std;
int main() {
int i, j, n;
n = 6;
// Stampare una tabella di numeri crescenti da i + 1 a n per n righe
// Inserire un "+" quando si supera la colonna n - i
for (i = 0; i < n; i++) {
for (j = 1; j <= n; j++) {
if (j <= n - i) {
cout << "\t" << j + i;
} else {
cout << "\t" << "+";
}
}
cout << endl;
}
return 0;
}
Questi sono alcuni esempi sui cicli for annidati, nelle prossime lezioni proporrò tanti 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++