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 の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。 |