過去問ドリル

平成23年度 特別 ITパスポート試験 問96

テクノロジ/アルゴリズム

【中問B(問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

出典:平成23年度 特別 ITパスポート試験 問96

正解:ウ

解説

M = 2 なので,大人は TP(2, 1) = 4,000 円,子供は TP(2, 2) = 1,500 円です。J = 10,K = 20 なので,割引前の合計金額は 10×4,000 + 20×1,500 = 40,000 + 30,000 = 70,000 円です。J + K = 30 枚で 20 枚以上なので 1 割引になり,70,000 × 0.9 = 63,000 円です。

選択肢ごとの解説

  • ア誤り。45,000 円は,M = 1 の金額(3,000 円と 1,000 円)で計算して 1 割引した値です。M = 2 の金額で計算していません。
  • イ誤り。50,000 円は,M = 1 の金額で計算し,割引もしなかった値です。M = 2 の金額で計算し,割引もする必要があります。
  • ウ正しい。70,000 円を 1 割引して 63,000 円です。
  • エ誤り。70,000 円は 1 割引前の金額です。合計 30 枚で 20 枚以上なので割引が適用されます。
ITパスポートの過去問を演習モードで解く