本文へスキップ

平成27年度 春期 ITパスポート試験 問99

この問題の解説と、これまでの解答の記録です。

問99
頻出度★★☆

F社では,新製品を開発するに当たり,100人のモニタを募集して市場調査を行った。モニタには,性能,価格,デザインの三つの項目について,それぞれを重視するかどうかを“はい”又は“いいえ”のいずれかで答えてもらった。 モニタから得られた回答は,図1のレコード形式で回答ファイルに登録した。 レコードの項目“性能”,“価格”,“デザイン”には,それぞれ,質問に対する回答が“はい”の場合には1が,“いいえ”の場合には0が記録されている。 回答ファイルの中から,条件に合致するレコード数を表示するために,次の命令が使用できる。 件数表示(条件) ここで,条件には,and,or及び[ ]を組み合わせた複合条件を指定できる。条件の評価は[ ]の中が優先して評価される。また,[ ]の中にさらに[ ]を記述することもできる。 条件を変えて,命令を実行した結果を表1に示す。 表1 命令を実行した結果

条件件数表示命令の実行結果
性能=155
価格=160
デザイン=145
[性能=1]and[価格=1]30
[価格=1]and[デザイン=1]25

表1の結果から,次の命令を実行したときに表示されるレコード数は幾つか。 件数表示([性能=1] or [価格=1])

出典 平成27年度 春期 ITパスポート試験 問99
解説

問 99

※ この問題は、解説作成時の検算で公表解答を確認しきれませんでした。判定は IPA 公表の解答どおりです。

  • 不正解ア

    60 は表1 の[価格=1]の件数そのものです。or は「価格を重視する人」だけでなく「性能を重視する人」も含めた和集合なので、価格を重視しないが性能は重視する25人(55-30)が抜け落ちてしまいます。片方の条件の件数をそのまま答えてしまう典型的な誤りです。

  • 不正解イ

    70 は表1 の行を取り違えたときに出てくる値です。例えば[価格=1]の60 の代わりに[デザイン=1]の45 を使って 55+45-30=70 としたり、モニタ全体の100人から and の30人を引いて 100-30=70 としたりすると、この値になります。どちらも設問の条件(性能と価格の or)とは対応しておらず、誤りです。

  • ウ

    正解 この中問では、100人のモニタに「性能」「価格」「デザイン」を重視するかを聞き、はいなら1、いいえなら0 を記録しています。表1 の実行結果は、[性能=1]が55件、[価格=1]が60件、[性能=1]and[価格=1]が30件です。問われている 件数表示([性能=1]or[価格=1])の or は論理和、つまり「性能を重視する人の集合」と「価格を重視する人の集合」の和集合(少なくともどちらか一方を満たす人)を数えます。ここで単純に 55+60 と足すと、両方を重視する30人を2回数えてしまいます。そこで包除原理(和集合の要素数=A+B-A∩B)を使い、55+60-30=85 となります。内訳で確かめると、性能だけ=55-30=25人、価格だけ=60-30=30人、両方=30人で、25+30+30=85人となり一致します。よって表示されるレコード数は85で、正解はウです。

  • 不正解エ

    115 は 55+60 をそのまま足した値で、性能と価格の両方を重視する30人を二重に数えています。そもそもモニタは全部で100人なので、レコード数が115 になることはあり得ません。重なり(積集合)を引き忘れた場合の代表的な誤答です。

ここがポイント
  • 検索条件の or は論理和=和集合、and は論理積=積集合に対応する。件数を求めるときは包除原理 |A∪B|=|A|+|B|-|A∩B| を使い、両方に該当する分の二重計上を必ず取り除く。
  • 表から読む値は「条件ごとの件数」であって排他的な内訳ではない。[性能=1]の55 には両方重視の30人が含まれているため、片方だけの人数は 55-30=25 のように引き算で求めるとイメージしやすい(ベン図を描くと確実)。
用語

解答の記録