プログラミング入門I
2019.01.28
最終の確認テストを授業の後半で行います.演習問題をしっかり検討して準備していてください.
今回の宿題については,私の方のアップロード失敗のミスがあり,みなさんにはご迷惑をおかけしました.少し甘めに採点しましたので,ご容赦ください.
さて,しかしながら問題のある答案はチェックさせて頂いております.残念なのはコンパイルエラーがあったことです.提出前の確認をよろしくお願いします.
コンパイルエラー: b1806
警告: b1860 b1755
今回の中身に関しては,表示に関する注意事項がわかってもらえなかったことによる問題が多く見られました.すなわち,
のように点の位置を表す記号と点の名称を同時に表示させようとするものでした.そうすると,「プロットが重なった例」のように本来名称Pが表示されるべきところが点Qのプロットで上書きされる状況が再現されなくなりますので,条件を満足していません.また,そのあたりの重なりを場合分けで出そうとすると,やたらと条件が細かく別れて if の乱立になるのでそれをしなくても良いように表示の優先順位を決めました.詳しくは,解答例を参考にしてください.細かい場合分けを行った皆さん,お疲れ様でした.
乱数の基本がこの時点でもわかっていない人が数名いました.
上の例は,例えば座標がP(1,3)とQ(3,3)のように同じ y 座標を持っていてしかもPよりもQの x 座標が大きい時に,すでに改行されてしまっているので,表示できません.
本格的な多重のループの問題に挑戦しましたが,基本は手順(アルゴリズム)を考えることです.どういう順番に何をすると目的が達成されるのかを一つ一つ考えてください.そのためには,メモなど紙に書いて考えること,変数の値がどのように変わっていくのか,自分で手作業で確認していくことが重要でした.忘れないようにしましょう.
2重の for 文の基本は以下のようなものでした.
実習の演習問題は当日ご案内します.
授業は今回が最後ですが,宿題は出しますので,最後のチャレンジをよろしくお願いします.
ハイフンライン無し: b1820 b1821 b1831 b1763
インデント不適切: b1804 b1821 b1823 b1842 b1848 b1854 b1859 b1863 b1864 b1202 b1718 b1769
printf(" *P");
x1 = rand() % 4 + 1;
y1 = rand() % 4 + 1;
x2 = rand() % 4 + 1;
y2 = rand() % 4 + 1;
for(y=5;y>=1;y--)
{
printf("%d |",y);
if(y == b)
{
for(x=0; x<=a-1;x++)
{
printf(" ");
}
printf("*P\n");
}
else if(y == d)
{
for(x=0;x<=a-1;x++)
{
printf(" ");
}
printf(" *Q\n");
}
else
{
printf("\n");
}
}
目次ページに戻る