KM-29|情報Ⅰ 対策問題
令和7年度追試 第3問 問3 ある月から、ごみ拾いで集めるごみの種類を7種類に増やすことになり、生徒のごみ拾いの結果を配列に格納する問1の図2のプログラムを変更することになった。その際、ごみの種類が多いと番号で入力するのがわかりにくいと考え、Uさんは、図2の(05)・(06)行目の代わりとなる、ごみの種類の名称を文字列で入力できる図5のプログラムを作成した。 図5の(01)行目では、集めるごみの種類(1〜7)を添字とし、対応する名称を格納する配列 Namae を用意する。(02)行目では、変数 shuruisu にごみの種類数として7を代入する。(04)行目では、入力されたごみの種類の名称を変数 meishou に代入する。(05)〜(07)行目では、ごみの種類を表す数値を空欄アに代入する。 なお、図5の(07)行目の空欄アには、前問の図2と同じく Shurui[n] (n番目の生徒のごみの種類)が入る。 図5の空欄ク・ケに入れる組合せとして最も適当なものを選べ。

解答・解説を見る
正解: 1
正答
1
問題の整理
「ペットボトル」のような名称(文字列)を、対応する種類番号(数値)に変換したい——そのために、名称の一覧である配列 Namae を先頭から1つずつ調べ、入力と一致するものを探します。この「先頭から順に調べて探す」方法を線形探索といいます。
仕組みの要は、Namae の添字と種類番号を一致させてあることです(Namae[1]=可燃ごみ、Namae[2]=不燃ごみ、Namae[3]=ペットボトル…)。
解き方
- 空欄ク (繰り返しの範囲): Namae の全要素(7種類)を調べたいので、j は 1 から種類数 shuruisu まで。定数の7を直接書かずに変数 shuruisu を使えば、将来種類が増えても(01)(02)行を直すだけで済みます。
- 空欄ケ (格納する値): (06)行で「Namae[j] == meishou」が成り立ったとき——つまり入力された名称が一覧のj番目と一致したとき——その位置 j がごみの種類番号そのものです。たとえば「ペットボトル」は Namae[3] にあるので、j=3 のときに一致し、Shurui[n] = 3 が格納されます。よってケ = j。
「探し物が見つかった位置(添字)こそが欲しい答え」という線形探索の使い方は、名前→番号、商品名→商品コードのような変換の定番パターンとして、プログラミング問題に繰り返し登場します。
選択肢の確認
1.○ 種類数ぶん繰り返し、一致した位置jを番号として格納。
2.× meishouは入力された文字列で、番号ではない。
3.× 繰り返しの上限に、その繰り返しで動くj自身は使えない。
4.× ninzuは生徒数(40)で無関係。Namae[j]は文字列。
ここだけは覚えよう
線形探索は「見つかった位置」が答えになる — 一覧の添字に意味(番号)を持たせるのが定番の設計。