問 9(提出プログラム名:ex0809a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)
※講義資料(その2)で説明している内容です
このプログラム(ex0809a.c)をダウンロードし,この中の関数 get_nearest を完成させなさい.
このプログラムでは,最初に整数 x を読み込み,続いて SIZE 個の整数を読み込んでそれらを配列 a へ格納する(SIZE はマクロとし,5 と定義してある).
その後,配列に格納されている SIZE 個の整数の中で x に最も近いものを見つけて出力するものとする.
関数 get_nearest は x と配列 a を引数として受け取り,x に最も近い値を返すものとする.
なお,整数 x と a[i] の間の近さは |x - a[i]| で定義する.
最も近い整数が 2 つ以上見つかった場合は,最初に見つかった(添字 i が最小の)ものを返す.
ただし,この問題では get_nearest のみを編集することとし,それ以外の部分は変更してはいけません.
【注意】
C 言語では絶対値を求める標準ライブラリ関数 abs があるが,これを使ってはいけません.
ただし,自分で絶対値を求める関数を自作するのは構いません.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
x を入力してください:0 5 個の整数を入力してください:2 3 8 9 1 0 に最も近いのは 1 です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
x を入力してください:5 5 個の整数を入力してください:1 6 3 4 8 5 に最も近いのは 6 です⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
x を入力してください:1 5 個の整数を入力してください:2 2 3 1 1 1 に最も近いのは 1 です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の実行例と出力が違っていることを見落としている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
問 4 ~問 9 は 6/4(火)12:00 までに提出を済ませてください.※23:59 ではないので注意!
(ex0804a.c ~ ex0809a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 7 (ex0807a.h) ]
← [ 問 8 (ex0808a.c) ]