KM-28|情報Ⅰ 対策問題
令和7年度追試 第3問 問2 生徒全員のごみ拾いの結果が前問の配列に格納された後、集計係はごみの総重量を計算するプログラムを動かす。ただしこの時点では、配列 Keiryou には入れ物と一緒に量ったごみの重量が格納されているので、ごみの総重量を正確に集計するには入れ物の重量を引く必要がある。なお、バケツの重量は350gであるが、ごみ袋の重量は無視できるとして0gとする。 そこでUさんは、ごみの種類ごとの総重量を集計し表示する図4のプログラムを考えた。(01)行目では、変数 ninzu にクラスの生徒数として40を代入する。(02)行目では、可燃ごみの総重量を集計するための変数 kanen、不燃ごみの総重量を集計するための変数 funen を初期化する。(04)〜(07)行目では、入れ物(バケツは1、ごみ袋は2で表される)を除いたごみの重量を求め、変数 gomi に代入する。(08)〜(11)行目では、ごみの種類(可燃ごみは1、不燃ごみは2で表される)ごとの総重量を集計する。「==」は両辺の値が等しいかどうかを調べる比較演算子である。 図4の空欄エ・オに入れる組合せとして最も適当なものを選べ。

解答・解説を見る
正解: 1
正答
1
問題の整理
「もし【条件】ならば:」の条件を埋める問題です。コツは、空欄そのものを見つめるのではなく、条件が真だったときに実行される「直後の処理」を見ることです。処理の意味が分かれば、どんな条件のときに実行されるべきかが逆算できます。
前提の対応: 入れ物はバケツ=1・ごみ袋=2、種類は可燃=1・不燃=2、バケツの重さは350g。
解き方
- 空欄エ: 真のとき(05)行で「gomi = Keiryou[i] − 350」と、350を引いています。350gを引くのは入れ物がバケツのときだけのはず。つまりエは「i番目の生徒の入れ物はバケツか?」を式にした Iremono[i] == 1 です。
- 空欄オ: 真のとき(09)行で「kanen = kanen + gomi」と、可燃ごみの合計に加算しています。つまりオは「i番目のごみは可燃か?」= Shurui[i] == 1 です。
逆の組合せ(エに種類、オに入れ物)を入れてみると、「可燃ごみなら350を引く」「バケツならkanenに足す」という意味の通らない処理になることからも、正解が確認できます。
また「== 2」を選ぶと、ごみ袋のときに350を引く・不燃をkanenに足す、とやはり逆の動きになります。数値と意味の対応(バケツ=1、可燃=1)を最後まで手放さないことが大切です。
選択肢の確認
1.○ バケツ判定→350を引く、可燃判定→kanenに加算。処理と一致。
2.× ごみ袋(=2)のときに350を引いてしまう。
3.× 種類と入れ物の判定が逆で、直後の処理と対応しない。
4.× 重量が1gかどうかを判定しても意味がない。
ここだけは覚えよう
条件の空欄は「真のときの処理」から逆算 — 350を引く→バケツ判定、kanenに足す→可燃判定。