配列の並びの一致率を求める処理【基本情報技術者試験 科目B サンプル問題】

(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問12のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bのサンプル問題を題材に,2つの並びがどの程度一致しているかを表す一致率を求める処理について学習します。この問題では,同じ要素番号の要素を順番に比較し,一致した要素の割合から一致率を求める処理を確認します。

広告

(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問12

 次のプログラム中の       に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 関数 simRatio は,引数として与えられた要素数1以上の二つの文字列の配列 s1 と s2 を比較し,要素数が等しい場合は,配列の並びがどの程度似ているかの指標として,(要素番号が同じ要素の文字同士が一致する要素の組みの個数 ÷ s1の要素数)を実数型で返す。例えば,配列の全ての要素が一致する場合の戻り値は1,いずれの要素も一致しない場合の戻り値は0である。

 なお,二つの配列の要素数が等しくない場合は,-1を返す。

 関数 simRatio に与える s1,s2 及び戻り値の例を表に示す。プログラムでは,配列の領域外を参照してはならないものとする。

「(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問12」の問題画像

〔プログラム〕

○実数型: 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[cnt]イ s1[i] ≠ s2[i]
ウ s1[i] = s2[cnt]エ s1[i] = s2[i]

【解答】

【解説】

simRatio は,2つの配列について,同じ要素番号の要素がどの程度一致しているかを調べ,一致率を求める処理である。for文では,変数 i を1から s1の要素数まで1ずつ増やしながら,s1[i] と s2[i] を比較している。このとき,2つの配列の同じ要素番号の要素が一致した場合に cnt を1増やすので,空欄には s1[i] = s2[i] が入る。

例えば,s1 と s2 の5個の要素のうち,同じ要素番号の要素が2個一致した場合,cnt は2となる。その後,cntをs1の要素数である5で割ることで,一致率は 2 ÷ 5 = 0.4 となる。

「(令和4年度12月公開) 基本情報技術者試験 サンプル問題 科目B 問12」の解答画像

この問題のポイント

 この問題から学べることは,

  • 2つの並びを比較して一致率を求める方法
  • 同じ要素番号の要素が一致した個数を数える方法
  • 一致した個数から一致率を計算する方法
  • 条件に該当しない場合に,特定の値を返す処理

です。特に,同じ要素番号の要素を順番に比較し,一致した場合だけ cnt を1増やすことで,一致した要素の割合を求める処理を理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告