平成23年度特別 ITパスポート 問95 解説
中問B(問93〜96)
プログラミングとテストに関する次の記述を読んで,問93~96に答えよ。
Q社のRさんは,チケット販売システムの開発で使用する関数のプログラミングとテストを実施しようとしている。この関数は,大人と子供のチケットの購入希望枚数を基に,合計金額の計算を行う。大人のチケットは3,000円,子供のチケットは1,000円である。一度に購入できる大人と子供のチケットの最高枚数は,それぞれ20枚までであり,関数はこの購入条件を満たしているかどうかをチェックする。また,合計で20枚以上購入する場合,割引処理を行う。関数の仕様と処理内容は次のとおりである。
〔関数の仕様〕
関数に渡される引数
J:大人のチケットの購入希望枚数,K:子供のチケットの購入希望枚数
(J,Kは0以上の整数)
関数の戻り値
L:合計金額 (Lは整数)
〔処理内容〕
(1) 購入希望枚数を基に,購入条件を満たしているかどうかを判定する。購入条件を満たしていない場合,合計金額に-1を代入する。
(2) 購入条件を満たしている場合,引数を基に次のとおりに合計金額の計算を行う。
合計金額 = 大人のチケットの購入希望枚数×3,000+子供のチケットの購入希望枚数×1,000
(3) チケットを合計で20枚以上購入した場合は,合計金額から1割を割り引く。
関数をテストするために用意したテストデータと予想結果の一部を表2に示す。表2のd,eに入れる値の組合せはどれか。

- アd:54,000 e:54,000
- イd:54,000 e:-1
- ウd:60,000 e:54,000
- エd:60,000 e:-1
答えを見る
正解 イd:54,000 e:-1
要点20枚以上は1割引、どちらかが20枚超なら-1を返す
解説
各テストデータの予想結果を計算します。
- d(J=15、K=15):どちらも20枚以下で合計30枚≧20なので割引あり。
L=0.9×(3,000×15+1,000×15)=0.9×60,000=54,000
- e(J=10、K=30):Kが20を超えるので購入条件を満たさず、L=-1
よってd:54,000、e:-1のイです。
- 60,000は割引を忘れた値。eで割引計算をしてしまうのも誤り。