問 7(提出プログラム名:ex0807.c)
このプログラム(ex0807.c)をダウンロードし,その中の関数 find_x を完成させなさい.
関数 find_x では,引数として与えられた配列 a と整数 x について,配列 a の中で x と同じ値を探し出して実行例のように出力するものとする.ただし,x と同じ値が複数見つかるような場合は,最初に見つかったもの(添字の小さい方)を出力するものとする.
ただし,関数 main の内容は一切書き換えないこと.
また,この問題ではマクロの定義部分を除いて 5 と直接書いてはいけません.
【ヒント】関数 find_x の作り方の一例を以下に示します(他の方法もあります):
① for ( i = 0; i < SIZE; i++ ){ ... } で繰り返しながら(※ i <= SIZE ではない),
{ ... } の中で a[i] が x と等しいかどうかを調べます.
そして,もし等しければ
「x が a[i] として見つかった」ことを printf で出力し,
さらに break; で for 文から脱出(それ以降を打ち切り)します.
② 上の for 文が終わった後に(※途中ではない),
i の値を調べ, i == SIZE ならば(途中で break による打ち切りが
行われなかった(※1)ことになるので)「x は見つからなかった」ことを printf で出力します.
(※1) for 文では i の値は 0 から順に 1 ずつ増えていって,SIZE に等しくなった時点で終了となりますが,もしも途中で break による脱出が行われていれば,i の値は SIZE とは等しくないことになります.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:52 6 22 5 22 探している整数を入力してください:22 22 は a[2] として見つかりました⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:52 6 22 5 22 探している整数を入力してください:100 100 は見つかりませんでした⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
5 個の整数を入力してください:1 1 1 1 1 探している整数を入力してください:1 1 は a[0] として見つかりました⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例)見つかった位置(添字)が違っている.
■ 配列として利用できない添字を使っている:a[SIZE] という変数は使えません.
(利用できるのは a[0], a[1], …, a[SIZE-1] の範囲になります.)
■ マクロを使わずに直接 5 や 4 と書いてしまっている.
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 6 (ex0806.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 8 (ex0808.c) ]