C++のfor文
は、繰り返し処理を効率的に行うための基本構文ですが、for文を入れ子(ネスト)にして、さらにif文を組み合わせることで、条件によって処理を分岐させることができます。
本記事では、ネストされたfor文とif文を組み合わせて、処理の流れを制御する方法について、具体的なコード例とともにわかりやすく解説いたします。
目次
基本例:ネストされたfor文
#include <iostream>
using namespace std;
int main()
{
for (int row = 0; row < 4; row++) {
for (int column = 0; column < 2; column++) {
cout << "row: " << row << ", column: " << column << endl;
}
}
return 0;
}
このコードは、外側のrow
ループと内側のcolumn
ループによって、すべての組み合わせを表示します。
応用例:ネストされたfor文+if文で条件分岐
次に、if文
を組み合わせて、特定の条件に該当する場合だけ追加のメッセージを表示する例を見てみましょう。
#include <iostream>
using namespace std;
int main()
{
for (int row = 0; row < 4; row++) {
for (int column = 0; column < 2; column++) {
cout << "row: " << row << ", column: " << column << endl;
if (row == column) {
cout << "※ rowとcolumnの値が等しいです。" << endl;
}
}
}
return 0;
}
実行結果(一部抜粋)
row: 0, column: 0
※ rowとcolumnの値が等しいです。
row: 0, column: 1
row: 1, column: 0
row: 1, column: 1
※ rowとcolumnの値が等しいです。
...
解説:if文を加える効果とは
このように、if文
を内側のループの中に入れることで、特定の条件に該当したときだけ処理を追加できます。
よく使われる組み合わせ例
if (i == j)
:同じインデックスのときif (value % 2 == 0)
:偶数のときだけ処理if (i * j > 10)
:積が一定値を超えたとき など
応用アイデア:表の中で特定のマスだけ表示変更
以下のようなコードを書けば、表の中で特定のマス(たとえば左上や右下)だけ別の表示に変更できます。
for (int row = 0; row < 5; row++) {
for (int col = 0; col < 5; col++) {
if (row == col) {
cout << "● ";
} else {
cout << "○ ";
}
}
cout << endl;
}
まとめ
- ネストされたfor文は、2次元の繰り返し処理に適しています。
- if文を組み合わせることで、条件に応じた処理分岐が可能になります。
- 複雑な表・グリッド・組み合わせ処理の中で、柔軟な条件制御を行う際に非常に有効です。
処理の流れを正しく把握し、コードの可読性を保ちながら、条件分岐と繰り返しを効果的に使い分けましょう。