i
, j
の偶奇それぞれについて場合分けをし、i
行目 j
列目に出力するべき文字を決定するようなコードです。このプログラム中では行と列がそれぞれ 0 から始まっていることにしていることに注意してください。
#include <iostream> int main() { while (true) { int h, w; std::cin >> h >> w; if (h == 0 and w == 0) { break; } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (i % 2 == 0) { if (j % 2 == 0) { std::cout << '#'; } else { std::cout << '.'; } } else { if (j % 2 == 0) { std::cout << '.'; } else { std::cout << '#'; } } } std::cout << std::endl; } std::cout << std::endl; } }
より条件を整理すると、以下のようにシンプルな条件分岐だけで実装することも可能です。
#
が出力される条件は $i$, $j$ の偶奇が一致しているときであり、.
が出力される条件は $i$, $j$ の偶奇が一致していないときでした。よって、前者は $i+j$ が偶数のときであり、後者は $i+j$ が奇数のときになります。
#include <iostream> int main() { while (true) { int h, w; std::cin >> h >> w; if (h == 0 and w == 0) { break; } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if ((i + j) % 2 == 0) { std::cout << '#'; } else { std::cout << '.'; } } std::cout << std::endl; } std::cout << std::endl; } }
オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |