必修課題 課題4-1, 4-2で指示されるプログラムを作成し, そのプログラムと実行結果を提出する.
レポートは,以下で説明する「プログラムリスト」の後に, 実行結果を印刷したものを重ねてホッチキスで綴じ,提出する.
N 円の借金がある.年利 a % の利息が付くとして,毎年 b 円返済したなら
何年で返済できるか計算するプログラムを作成せよ.
(N, a, b はキーボードから入力する)
ただし,無限ループに陥らないように工夫すること.
また,利息は返済前にかかるとせよ.なお,利子による端数(1円未満の
利子)は切り捨てること.
ヒント
ある年の借金の残金が,前年の残金より多ければ,いつまでも返済できず
に無限ループとなる.
数学関数を用いずに√2 の近似値を算出するプログラムを作成せよ.
1< √2 < 2 が分かっている.
まず,1と2の中点 1.5 について考える.
1.5 2と 2 の比較から
1< √2 <1.5
次に,1と1.5の中点 1.25 について考える.
1.25 2と 2 の比較から
1.25 < √2 <1.5
そして,1.25 と1.5の中点 1.375 について考える.
1.375 2と 2 の比較から
1.375 < √2 <1.5
.....
これを続けて行く.
.....
a < √2 < b
|b-a| < 10-5となれば (a+b)/2を近似値として計算をやめる.
整数 n を入力して,n 以下の自然数の組 (a, b, c)の中で,
a2 + b2 = c2
を満たすものを見つける.
繰り返し処理による総当りで条件を満足するものを探す.ただし,明らかに
無駄な処理を避けるために,繰り返しの範囲を工夫する.例えば,a と b
の対称性や,c > b であることを利用する.見つかった (a, b, c) の組み
はprintfを使って出力し,見つかった全ての整数の組の数を printf() で
表示する.
以下に、a, b の値を変えていって、c が a2 + b2 = c2 を満たすかどうか検証する方法を示す. 他にも、a, c (あるいは b, c ) の値を変える方法も考えられる.
a <= b < cとする.…繰り返し…
aは、どこまで探索すれば良いか?
a=1の時、(b=1, c=なし)、(b=2, c=なし)、(b=3, cなし)、(b=4, c=なし) a=2の時、(b=2, c=なし)、(b=3, c=なし)、(b=4, cなし) a=3の時、(b=3, c=なし)、(b=4, c=5) a=4は計算しなくて良い(42+42 > 52) よって、解は(a=3, b=4, c=5)