次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数searchは、二つの文字型の配列を、それぞれ引数data及びkeyで受け取り、dataから、keyの要素の並びと同じ並びを全て探し、その先頭の要素番号を全て格納した配列を返す。見つからなければ、要素数0の配列を返す。 関数searchをsearch({"a", "b", "a", "b", "c", "a", "b", "c"}, {"a", "b", "c"})として呼び出すと、/* β */の行の条件式が真となる回数は 回である。
途中一致も真に数える。全比較の成功回数を数える
〔プログラム〕
/* keyは、要素数1以上の配列である */
○整数型の配列: search(文字型の配列: data, 文字型の配列: key)
整数型: i, j, lenData, lenKey
整数型の配列: result ← {} // 要素数0の配列
lenData ← dataの要素数
lenKey ← keyの要素数
/* (lenData − lenKey + 1) が0以下のときは繰返し処理を実行しない */
for (i を 1 から (lenData − lenKey + 1) まで 1 ずつ増やす)
for (j を 1 から lenKey まで 1 ずつ増やす) // α
if (data[i + j − 1] が key[j] と等しい) /* β */
if (j が lenKey と等しい)
resultの末尾 に iの値 を追加する
endif
else
αの行から始まる繰返し処理を終了する
endif
endfor
endfor
return result
選択肢
- ア1
- イ2
- ウ3
- エ4
- オ5
- カ6
- キ7
- ク8
- 99
- 1010
正解と解説
正解:ク 8
外側のループはiを1から6まで動かし、内側で照合が一致するたびに条件式が真になる。i=1では2文字目まで一致して3文字目で外れるので真が2回、i=3とi=6ではkeyと完全に一致するので各3回ずつ真になる。i=2、4、5は1文字目で外れるため真にならず、合計は2+3+3で8回となる。
選択肢ごとの解説
- ア一致の途中経過まで含めると1回では足りない。
- イ見つかった位置の数と混同した値である。
- ウ完全一致1回分だけを数えた値にすぎない。
- エ途中で外れる比較の分が数えられていない。
- オ一致した比較の合計としては不足している。
- カ2回の完全一致分しか数えていない。
- キi=1で真になる2回のいずれかを数え落としている。
- クi=1の2回とi=3・i=6の各3回で合計8回。これが正しい回数である。
- 9実際に真になる比較の回数を超えている。
- 10条件式が真になる回数を過大に数えている。
同じ分野の他の問題
- キーが小文字のアルファベット1文字(a, b, …, z のいずれか)であるデータを、大きさが10のハッシュ表に格納する…2024年度 公開問題 科目A 問2
- 次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数addは、引数で指定…2023年度 公開問題 科目B 問4
- 次の記述中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数searchは、引数…2022年度 公開問題 科目B 問13
- 10進法で5桁の数a1 a2 a3 a4 a5を、ハッシュ法を用いて配列に格納したい。ハッシュ関数をmod(a1+a2+…2022年度 公開問題 科目A 問7
- 10進法で5桁の数a1 a2 a3 a4 a5を、ハッシュ法を用いて配列に格納したい。ハッシュ関数をmod(a1+a2+…2019年度 秋期 午前 問10
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。