基礎理論|平成23年度 特別 ITパスポート試験 問96
〔中問B・プログラミングとテスト〕〔テクノロジ〕1 日券,2 日券といった日数の異なる種類のチケットの金額計算に対応できるように,〔処理内容〕の 2 及び関数の仕様を変更し,引数にチケットの日数を表す M を追加した。M には使用できる日数が入る。種類別のチケット金額を設定する配列を TP(M,N)とする。N は大人の場合は 1,子供の場合は 2 とする。配列の値は次のとおりである。引数が J=10,K=20,M=2 のときの合計金額は何円か。なお,関数は,引数に応じてこの配列を参照し,チケット金額を決定する。
〔中問B の記述(抜粋・再掲)〕チケット販売システムの関数は,大人と子供のチケットの購入希望枚数 J,K を基に合計金額 L を計算する。一度に購入できる枚数はそれぞれ 20 枚までであり,購入条件を満たしていない場合は合計金額に −1 を代入する。合計で 20 枚以上購入する場合は,合計金額から 1 割を割り引く。
〔配列の値〕
| N=1(大人) | N=2(子供) | |
|---|---|---|
| M=1(1 日券) | TP(1,1)= 3,000 | TP(1,2)= 1,000 |
| M=2(2 日券) | TP(2,1)= 4,000 | TP(2,2)= 1,500 |
| M=3(3 日券) | TP(3,1)= 5,000 | TP(3,2)= 2,000 |
- 45,000
- 50,000
- ✓ これが正解63,000
- 70,000
解説
日数の行を選んでから、大人と子供の値を取り出します。
金額は、日数と区分の二つで決まる表に置かれました。縦の並びが日数で、横の並びが大人と子供です。設問の日数は二日なので、二行目を選びます。その行の大人の値は四千円、子供の値は千五百円でした。大人の枚数は十枚なので、四万円になります。子供の枚数は二十枚なので、三万円になりました。どちらも二十枚までなので、買える条件は満たします。足すと七万円ですが、まだ終わりませんでした。合計の枚数は三十枚で、二十枚を超えています。だから一割を引いて、六万三千円になりました。この数を挙げた肢が当たり、行の選び方が要でした。一日の行を選ぶと、五万円のほうへ寄ってしまいます。割り引く手を落とすと、七万円のほうへ寄りました。行を先に決めるのが要でした。シラバスも、配列をデータ構造の考え方として挙げています。
ほかの選択肢はなぜ違うのか
- 四万五千円を挙げた肢のほうです。行や列の取り方が、どこかでずれた値でした。日数が二日なので、選ぶのは二行目です。大人は四千円、子供は千五百円になりました。表の読み方を確かめます。値がまるで合いません。読み方を直します。
- 五万円を挙げた肢というのが、こちらです。一日の行を選ぶと、この辺りへ寄りました。大人は三千円、子供は千円になります。ところが設問の日数は、二日でした。選ぶ行が一つ上です。日数を読み落としています。行が一つ上でした。
- 七万円を挙げた肢が、こちらに当たります。二行目を選ぶところまでは、合っていました。足した値も、確かに七万円になります。けれども合計は三十枚で、二十枚を超えました。一割を引く手が残っています。最後の一手が抜けました。一割を引きます。
この問題に関係する言葉
- 配列
出典:平成23年度 特別 ITパスポート試験 問96(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くなら基礎理論へ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)