平成23年度特別 ITパスポート 問96 解説
中問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割を割り引く。
1日券,2日券といった日数の異なる種類のチケットの金額計算に対応できるように,〔処理内容〕の(2)及び関数の仕様を変更し,引数にチケットの日数を表すMを追加した。Mには使用できる日数が入る。種類別のチケット金額を設定する配列をTP(M,N)とする。Nは大人の場合は1,子供の場合は2とする。配列の値は次のとおりである。引数がJ=10,K=20,M=2のときの合計金額は何円か。
なお,関数は,引数に応じてこの配列を参照し,チケット金額を決定する。
〔配列の値〕
TP(1,1)=3,000, TP(1,2)=1,000,
TP(2,1)=4,000, TP(2,2)=1,500,
TP(3,1)=5,000, TP(3,2)=2,000
- ア45,000
- イ50,000
- ウ63,000
- エ70,000
答えを見る
正解 ウ63,000
要点配列TP(M,N)で日数と大人・子供別の単価を参照する
解説
M=2(2日券)なので、大人はTP(2,1)=4,000円、子供はTP(2,2)=1,500円です。
- 割引前:4,000×10+1,500×20=40,000+30,000=70,000円
- J+K=30≧20なので1割引:70,000×0.9=63,000円
よって正解はウです。
- エ:70,000円は割引を忘れた値。
- ア:1日券の単価で計算した50,000円に1割引を適用した値。
- イ:1日券の単価で計算し、割引を忘れた値。