C++におけるネストされたループの活用方法


  1. ネストされたforループ: ネストされたforループは、最も一般的な形式のネストされたループです。以下の例は、2次元配列を走査するためのネストされたforループです。
const int ROWS = 3;
const int COLS = 3;
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < ROWS; i++) {
    for (int j = 0; j < COLS; j++) {
        cout << matrix[i][j] << " ";
    }
    cout << endl;
}

この例では、外側のループが行を、内側のループが列を走査しています。出力結果は以下の通りです。

1 2 3 
4 5 6 
7 8 9 
  1. ネストされたwhileループ: forループだけでなく、whileループでもネストを行うことができます。以下の例は、2つの変数が指定された値になるまでの範囲内の整数を走査するネストされたwhileループです。
int x = 1;
int y = 1;
int targetX = 3;
int targetY = 4;
while (x <= targetX) {
    while (y <= targetY) {
        cout << "(" << x << ", " << y << ") ";
        y++;
    }
    y = 1; // yをリセット
    x++;
    cout << endl;
}

この例では、外側のループがxの値を、内側のループがyの値を増加させながら走査しています。出力結果は以下の通りです。

(1, 1) (1, 2) (1, 3) (1, 4) 
(2, 1) (2, 2) (2, 3) (2, 4) 
(3, 1) (3, 2) (3, 3) (3, 4) 
  1. ネストされたループの制御: ネストされたループでは、内側のループが完了するまで外側のループが進まないため、内側のループの制御が外側のループに影響を与えます。以下の例は、内側のループで特定の条件が満たされた場合に外側のループを中断する方法を示しています。
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 5; j++) {
        cout << "(" << i << ", " << j << ") ";
        if (i == 3 && j == 3) {
            break; // 内側のループを中断
        }
    }
    cout << endl;
}

この例では、内側のループが(i, j)が(3, 3)の位置で中断されます。出力結果は以下の通りです。

(1, 1) (1, 2) (1, 3) (1, 4) (1, 5) 
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) 
(3, 1) (3, 2) (3, 3) 

ネストされたループは、C++プログラミングにおいて非常に強力なツールです。上記のコード例を参考にしながら、ネストされたループを使用して自身のプログラムを作成してみてください。