第七回課題
以下の問いに答えよ
[課題 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点に注意すること。
- プログラミングでは「=」は「代入」であるので、「等しい」に相当する記号を用いねばならない (既に[演習3]や[課題1]で用いている)
- 「切片 a」に相当するものは プログラム中の変数でどう表現されるかを考える
オンラインコンパイラで C/C++ を自習しように戻る