第七回課題

以下の問いに答えよ

[課題 1]
前ページの[演習3]に引き続く形で、コンソールに 以下のように出力されるプログラムを作成せよ。
もちろん、長さ length の値を変えても動作するプログラムでなければならない。



(ヒント) 前ページの[演習3]から「2文字」変更するだけで解答にたどり着ける。

[課題 2]
[課題1]に引き続く形で、コンソールに以下のように出力されるプログラムを作成せよ。
もちろん、長さ length の値を変えても動作するプログラムでなければならない。



プログラムの枠組みは以下のようだが、これは課題1からif文の条件の部分 (「??」の部分) のみが変更点ということである。
int length = 9;
for(int j=0 ; j<length ; j++)
{
	for(int i=0 ; i<length ; i++)
	{
		if( ?? )
		{
			cout << "0";
		}
		else
		{
			cout << "*";
		}
	}
	cout << "\n";
}
paiza.IO に貼り付けた形はこちら。やはり「??」部をどう書くかがポイントである。



「??」部は以下のように「条件1」と「条件2」を結びつけて実現される。
これも[課題1]と同じである。



となると、「条件1」と「条件2」をどう書くかがこの課題のポイントである。

そのために必要な知識を下図にまとめた。
まず、「*」や「0」で埋め尽くされた平面は、下図(左)のように横座標 i と縦座標 j で表現される。
原点は左上であることに注意すること。
そして、この平面に× (バツ) 状に「0」を配置したいのだった。



この座標平面は原点が左上なのでややわかりにくい。
そこで、皆さんにわかりやすいよう、原点が左下にくるよう図を上下反転してみよう。
それが、上図(右)である。

この形式で描けば、× (バツ) に相当する二つの直線が「j = i」および「j = - i + a」(a は切片) であることはすぐわかるだろう。

さて、あとはこれをプログラムでどう表現するかである。以下の2点に注意すること。


オンラインコンパイラで C/C++ を自習しように戻る