[中問B]
プログラミングとテストに関する次の記述を読んで、問に答えよ。
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
答:ウ
J=10、M=2のときは、TP(2,1)よりチケット金額は4,000円
K=20、M=2のときは、TP(2,2)よりチケット金額は1,500円
また、チケット枚数が20枚以上なので、1割が合計金額から引かれる。
合計金額=(4,000×10+1,500×20)×0.9=63,000円
よって正解はウとなる。