問 9(提出プログラム名:ex0109a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)
2 以上の整数 n を読み込み,以下のアルゴリズムに従ってその平方根(√n)の近似値を出力するプログラムを作りなさい.ただし,提出するファイル名は ex0109a.c とすること.
ここでは n は常に 2 以上であると仮定してプログラムを作ってよい.
【実装すべきアルゴリズム】
① a = 1, b = n とする.ただし,a, b とも double 型の変数とする.
②求める平方根は a と b の間の数値であるはずなので,仮の答えとして x = (a+b)/2 とする.
③ 「xの2乗」と「 n」 の差(絶対値)が 0.00001 より大きい限り,以下の④,⑤を繰り返す.
④ xの2乗が n よりも大きければ b = x とし,さもなくば a = x とする.
⑤ 改めて x = (a+b)/2 とする.
⑥上の繰り返しが終了したら,x を n の平方根の近似値として出力する.
なお,このプログラムを作るにあたって,絶対値を求める関数(マクロを含む)を使ったり作ったりしてはいけません.
【ヒント】
「|y| が z より大きい」⇔「y が -z より小さい,または,y が z より大きい」
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
(以下は Windows 環境での結果なので Mac 環境の場合は異なる場合があります)
2 以上の整数を入力してください:2 2 の平方根の近似値は 1.414215⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
2 以上の整数を入力してください:3 3 の平方根の近似値は 1.732048⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
2 以上の整数を入力してください:5 5 の平方根の近似値は 2.236069⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
■ 「5 の平方根の近似値は」の部分が n や 2 に固定になってしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
問 4 ~問 9 は 4/16(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0104a.c ~ ex0109a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 7 (ex0107a.c) ]
← [ 問 8 (ex0108a.c) ]