令和6年試験問題 [科目B]問5

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
次のプログラム中のacに入れる正しい答えの組合せを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 一度の注文で購入された商品のリストを,注文ごとに記録した注文データがある。表に,注文データの例を示す。
b05_1.png
 注文データから,商品xと商品yとが同一の注文で購入されやすい傾向を示す関連度Lxyを,次の式で計算する。
LxyMxy × 全注文数Kx × Ky
 ここで,Mxyは商品xと商品yとが同一の注文で購入された注文数,Kxは商品xが購入された注文数,Kyは商品yが購入された注文数を表す。表の例では,MABが2,全注文数が6,KAが4,KBが3であるので,商品Aと商品Bの関連度LABは,(2×6)/(4×3)=1.0である。
 手続 putRelatedItem は,大域変数 orders に格納された注文データを基に,引数で与えられた商品との関連度が最も大きい商品のうちの一つと,その関連度を出力する。プログラムでは,商品は文字列で表し,注文は購入された商品の配列,注文データは注文の配列で表している。注文データには2種類以上の商品が含まれるものとする。また,注文データにある商品以外の商品が,引数として与えられることはないものとする。

〔プログラム〕
b05_2.png

b05_3.png
正解 問題へ
分野:アルゴリズムとプログラミング
カテゴリ:プログラミングの諸分野への適用
解説
説明文で与えられている以下の式と、それをプログラムで表現している部分と比較すると、次のような対応関係になっていることがわかります。
LxyMxy × 全注文数Kx × Ky
valueL ← (arrayM[i] × c) ÷ (itemCount × arrayK[i])
  • Lxy ⇒ valueL
  • Mxy ⇒ arrayM[i]
  • 全注文数 ⇒ c
  • Kx ⇒ itemCount
  • Ky ⇒ arrayK[i]
まずわかりやすいのは空欄cです。全注文数を表す式ですから、注文データの配列であるorders の要素数が当てはまります。

次に空欄a、bを含むfor文を見てみると、order(注文データ)に含まれる値を条件として1を加算する処理を行っています。
order に otherItems[i] が含まれる
bに1を加算
order に otherItems[i] が含まれ、かつ、order に item が含まれる
aに1を加算
仮に引数 item が"A"だったとすると、order に"A"以外の対象商品が含まれていればbを1を加算、さらに order に"A"が含まれていればaを1を加算します。"A"とそれ以外の対象商品が同時購入された注文数は Mxy ですから、空欄aにはそれに対応する変数であるarrayM[i]が当てはまります。もう一方の空欄bには、引数 item との関連度を調べたい商品の注文数であるarrayK[i]が当てはまります。

したがって「オ」の組合せが適切です。

Pagetop