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.

Banner Pubblicitario

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:

Banner pubblicitario
#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++

2- Variabili in C++

3- Operatori di assegnazione in C++

4- Esempi in C++

5- Casting in C++

Successione di Fibonacci in C++