次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数simRatioは、引数として与えられた要素数1以上の二つの文字型の配列s1とs2を比較し、要素数が等しい場合は、配列の並びがどの程度似ているかの指標として、(要素番号が同じ要素の文字同士が一致する要素の組みの個数 ÷ s1の要素数)を実数型で返す。例えば、配列の全ての要素が一致する場合の戻り値は1、いずれの要素も一致しない場合の戻り値は0である。 なお、二つの配列の要素数が等しくない場合は、-1を返す。 関数simRatioに与えるs1, s2及び戻り値の例を表に示す。プログラムでは、配列の領域外を参照してはならないものとする。 〔プログラム〕 ○実数型: simRatio(文字型の配列: s1, 文字型の配列: s2) 整数型: i, cnt ← 0 if (s1の要素数 ≠ s2の要素数) return -1 endif for (i を 1 から s1の要素数 まで 1 ずつ増やす) if ( ) cnt ← cnt + 1 endif endfor return cnt ÷ s1の要素数 /* 実数として計算する */

一致率は同じ添字どうしの等号で数える

頻出基本情報技術者試験2022年度 公開問題 科目B12/アルゴリズムとプログラミング / アルゴリズム

表 関数simRatioに与えるs1, s2及び戻り値の例
s1s2戻り値
{"a", "p", "p", "l", "e"}{"a", "p", "p", "l", "e"}1
{"a", "p", "p", "l", "e"}{"a", "p", "r", "i", "l"}0.4
{"a", "p", "p", "l", "e"}{"m", "e", "l", "o", "n"}0
{"a", "p", "p", "l", "e"}{"p", "e", "n"}-1
〔プログラム〕 ○実数型: simRatio(文字型の配列: s1, 文字型の配列: s2) 整数型: i, cnt ← 0 if (s1の要素数 ≠ s2の要素数) return -1 endif for (i を 1 から s1の要素数 まで 1 ずつ増やす) if ( ) cnt ← cnt + 1 endif endfor return cnt ÷ s1の要素数 /* 実数として計算する */

選択肢

正解と解説

正解: s1[i] = s2[i]

この関数は、同じ要素番号どうしの文字が一致した組の個数を数え、要素数で割って一致率を返します。したがって数え上げる条件は、同じ添字iで両配列の要素が等しいこと、すなわち s1[i] = s2[i] です。カウンタcntを添字に使うと比較位置がずれ、不一致条件にすると値が反転してしまいます。

選択肢ごとの解説

出典:令和4年度 公開問題 基本情報技術者試験 科目B 問12(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。