前文
【中間B】 プログラミングとテストに関する次の記述を読んで、問93~96に答えよ。
Q社のRさんは、チケット販売システムの開発で使用する関数のプログラミングとテストを実施しようとしている。この関数は、大人と子供のチケットの購入希望枚数を基に、合計金額の計算を行う。大人のチケットは3,000円、子供のチケットは1,000円である。一度に購入できる大人と子供のチケットの最高枚数は、それぞれ20枚までであり、関数はこの購入条件を満たしているかどうかをチェックする。また、合計で20枚以上購入する場合、割引処理を行う。関数の仕様と処理内容は次のとおりである。
[関数の仕様] |
関数に引き渡される引数 |
J:大人のチケットの購入希望枚数、K:子供のチケットの購入希望枚数
(J,Kは0以上の整数) |
[処理内容] |
(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 |
解答・解説を見る
解答:ウ
- 配列には、TP(①,②)の意味がある。
|
① |
使用できる日数(M日券) |
|
② |
大人(1)または子供(2) |
- 引数が①J=10、②K=20、③M=2である。
|
① |
大人のチケットの購入希望枚数は10枚 |
|
② |
子供のチケットの購入希望枚数は20枚 |
|
③ |
使用できる日数(M日券)は2日件 |
- 1,2より参照する配列と計算式が分かる。
|
① |
TP(2,1)=4,000円×10=40,000円 |
|
② |
TP(2,2)=1,500円×20=30,000円 |
- チケットを合計で20枚以上購入しているので、合計金額から1割を割り引く。
|
40,000円+30,000円×0.9=(ウ)63,000円 |