問 6(提出プログラム名:ex0806.c)
このプログラム(ex0806.c)をダウンロードし,その中の関数 print_relative_diff を完成させなさい.
関数 print_relative_diff では,引数として与えられた 2 つの実数 x, y について,|x-y|/|x| を実行例のように出力するものとする(小数点以下は第 3 位までを出力).この問題では,x は 0 でないと仮定してプログラムを作ってよい.
ただし,関数 main の内容は一切書き換えないこと.
【注意】C 言語では実数の絶対値を求めてくれる fabs という関数があらかじめ用意されている(ネットを検索すれば出てくる)が,それを使ってはいけません.
【ヒント】
まず,求めたい |x-y|/|x| という値は次式のように書き換えることができます:
したがって,いったん絶対値を考えずに a = (x-y)/x を求めておいて,最後に |a| を出力すればよいことになります.※この場合,x, y とも double 型なのでキャストは不要です.
なお,|a| を出力する方法は説明するまでもないとは思いますが,
a < 0 ならば -a を,さもなくば元の a をそのまま出力すればよいです.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
x を入力してください:-10.2 y を入力してください:-5.5 |x-y|/|x| = 0.461⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
x を入力してください:1 y を入力してください:2 |x-y|/|x| = 1.000⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
x を入力してください:3.14 y を入力してください:0 |x-y|/|x| = 1.000⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例)x と y を逆にして計算してしまっている.
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 5 (ex0805.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 7 (ex0807.c) ]