C++による模範解答1

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;
  }
}

C++による模範解答2

より条件を整理すると、以下のようにシンプルな条件分岐だけで実装することも可能です。

# が出力される条件は $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;
  }
}

Reference

 

オンラインジャッジではじめるC/C++プログラミング入門 (マイナビ)

AIZU ONLINE JUDGE のコース問題を題材にした解説書です。各トピックごとに C/C++ 言語の基礎的な内容を学習し、Introduction to Programming の演習問題にチャレンジしていきます。内容は敷居の高いものではなく、プログラミング初学者が取り組む例題からスタートしています。