ITパスポート 2012年 春期 問58
問題文
次の“商品”表から、仕入先が“A社”で価格が140円以上の商品、及び仕入先が“B社”で価格が170円以下の商品を抽出した。得られた商品名だけを全て挙げたものはどれか。

選択肢
ア:ケーキ、イチゴ、コーヒー
イ:ケーキ、イチゴ、ジュース
ウ:チョコレート、リンゴ、コーヒー(正解)
エ:チョコレート、リンゴ、ジュース
🔒 解説は解答すると表示されます
次の“商品”表から条件に合う商品を抽出する問題【ITパスポート 解説】
正解の理由
条件は「仕入先が“A社”で価格が140円以上」または「仕入先が“B社”で価格が170円以下」です。表を行ごとに見て当てはまるかを判定すると、A社では「チョコレート(150円)」「リンゴ(190円)」が条件を満たし、B社では「コーヒー(160円)」が条件を満たします。したがって商品名だけを並べると「チョコレート、リンゴ、コーヒー」となり、これが選択肢の ウ に対応します。
解法ステップ
- 条件をはっきりさせる
- 条件A:仕入先 = A社 かつ 価格 >= 140
- 条件B:仕入先 = B社 かつ 価格 <= 170
※「かつ」は両方の条件を同時に満たすことを意味します。A社かB社かのどちらかに該当し、さらに価格条件も満たす行を抽出します(A社の条件とB社の条件は「または」で結ぶ)。
- 表の各行を順に確認する(見落としを防ぐため左から右へ1行ずつ)
- S001 チョコレート:仕入先 A社、価格150 → A社かつ150>=140 → 抽出する
- S002 ケーキ:仕入先 B社、価格260 → B社だが260>170 → 抽出しない
- S003 カステラ:仕入先 C社 → 仕入先がA社でもB社でもない → 抽出しない
- S004 リンゴ:仕入先 A社、価格190 → A社かつ190>=140 → 抽出する
- S005 イチゴ:仕入先 B社、価格220 → 220>170 → 抽出しない
- S006 メロン:仕入先 C社 → 抽出しない
- S007 ジュース:仕入先 A社、価格120 → 120<140 → 抽出しない
- S008 コーヒー:仕入先 B社、価格160 → B社かつ160<=170 → 抽出する
- S009 ビール:仕入先 C社 → 抽出しない
- 抽出結果を商品名だけ列挙する
→ チョコレート、リンゴ、コーヒー(選択肢の ウ と一致)
選択肢別の誤答解説
- ア: ケーキ、イチゴ、コーヒー
誤り理由:ケーキ(B社、260円)とイチゴ(B社、220円)はどちらもB社ですが、価格が170円以下という条件を満たしていません。コーヒーだけ正しいです。 - イ: ケーキ、イチゴ、ジュース
誤り理由:ケーキとイチゴは価格が170円以下でないため除外。ジュース(A社、120円)はA社ですが140円以上の条件を満たしません。つまり全て条件外です。 - ウ: チョコレート、リンゴ、コーヒー
解説:上の通り、A社かつ価格>=140 のチョコレート(150)とリンゴ(190)、B社かつ価格<=170 のコーヒー(160)で正しい組合せです。正答は ウ です。 - エ: チョコレート、リンゴ、ジュース
誤り理由:チョコレートとリンゴは正しいですが、ジュースはA社でも価格が120で条件(>=140)を満たしません。よって誤りです。
よくある誤解
- 「仕入先がA社かつB社」だと考える誤り
説明:仕入先は1つの値(A社かB社か)しか取れません。問題の意味は「A社かB社のどちらかのグループで、それぞれ別の価格条件がある」つまり (A社 の条件) または (B社 の条件) という構造です。 - 境界値(140、170)を含むか迷う
説明:問題文の表現「140円以上」「170円以下」はそれぞれ >=140、<=170 を意味します。140や170ちょうどは条件を満たします。 - 行を飛ばしてチェックすることで見落とす
説明:表では似たような項目が並ぶため、必ず1行ずつ順に確認すると安全です。
補足コラム
データ抽出の考え方は現場でもよく使います。たとえばデータベースや表計算ソフトで同じ条件を使って絞り込めます。
- SQL(Structured Query Language:構造化問合せ言語)の例(データベースで使う言語)
SELECT 商品名
FROM 商品表
WHERE (仕入先 = 'A社' AND 価格 >= 140)
OR (仕入先 = 'B社' AND 価格 <= 170);
- Excel(表計算ソフト)の場合の考え方(関数の例)
- 列に条件を満たすかどうかを判定する補助列を作り、フィルターでTRUEを抽出する方法がシンプルです。判定式の例(価格が列C、仕入先が列Dで行2の場合):
=OR(AND(D2="A社", C2>=140), AND(D2="B社", C2<=170))
- 列に条件を満たすかどうかを判定する補助列を作り、フィルターでTRUEを抽出する方法がシンプルです。判定式の例(価格が列C、仕入先が列Dで行2の場合):
どちらも「条件を組み合わせて真(True)か偽(False)かを判定する」考え方が共通です。
FAQ
Q1. 条件の「または」はどのように扱えばよいですか?
A1. 今回は「(A社でかつ価格条件)または(B社でかつ価格条件)」です。A社もB社も同時に満たす必要はありません。いずれかのグループの条件を満たせば抽出します。
A1. 今回は「(A社でかつ価格条件)または(B社でかつ価格条件)」です。A社もB社も同時に満たす必要はありません。いずれかのグループの条件を満たせば抽出します。
Q2. 価格がちょうど140円や170円の場合はどうなりますか?
A2. 「140円以上」「170円以下」は境界を含みます。つまり140円は含み、170円も含みます。
A2. 「140円以上」「170円以下」は境界を含みます。つまり140円は含み、170円も含みます。
Q3. 仕入先がC社のデータは無視してよいですか?
A3. はい。条件に仕入先C社は含まれていないので抽出対象外です。
A3. はい。条件に仕入先C社は含まれていないので抽出対象外です。
関連キーワード: データ抽出、条件フィルタ、論理演算(AND/OR)、境界条件、表計算

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

