課題 [1] 演算とデータ型(9/9)

問 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 の平方根の近似値は」の部分が n2 に固定になってしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


問 4 ~問 9 は 4/16(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0104a.c ~ ex0109a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.