課題 [8] 関数(9/9)

問 9(提出プログラム名:ex0809a.c)
※上級クラスは必須(中級クラスはできる人だけでよい)
(いずれも加点対象)
※講義資料(その2)で説明している内容です

このプログラム(ex0809a.c)をダウンロードし,この中の関数 get_nearest を完成させなさい.

このプログラムでは,最初に整数 x を読み込み,続いて SIZE 個の整数を読み込んでそれらを配列 a へ格納する(SIZE はマクロとし,5 と定義してある).
その後,配列に格納されている SIZE 個の整数の中で x に最も近いものを見つけて出力するものとする.
関数 get_nearestx と配列 a を引数として受け取り,x に最も近い値を返すものとする.
なお,整数 xa[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 から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.
なお,提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.