情報領域演習第一:P演習
電気通信大学情報理工学域I類 (情報系)
2024年度後学期
[一覧に戻る]
課題D2
問題
缶飲料の自動販売機の動きを真似するような,次のプログラムを作成せよ.ただし,缶飲料は1種類しかなく,その価格は200円であるとする.
まず,広域変数 \$num_cans で,自動販売機内にある缶飲料の総数を表す.
そして,広域変数 \$payment で,自動販売機内に投入された金額 (円) を表す.
\$num_cansの初期値は5,\$payment の初期値は0であるとする.
広域変数 \$num_cans, \$payment の値を見たり,値を変更することで,次の操作を行うメソッドを作成する.
- 自動販売機を初期化する initialize_vending_machine.つまり,initialize_vending_machine を実行すると,\$num_cansが5になり,\$paymentが0になる.
- 自動販売機にある缶飲料の数と投入されている総額を表示する show_vending_machine.
- 自動販売機にx円投入する pay(x).つまり,pay(x) を実行すると,\$payment が \$payment + x になる.
- 自動販売機に投入した総額を払い戻す pay_back.つまり,pay_back を実行すると,\$paymentが0になる.
- 缶飲料を購入する buy.つまり,buyを実行すると,\$paymentが200以上であり,かつ,\$num_cansが1以上であるとき,そのときに限り,\$num_cansが\$num_cans - 1になり,\$payment が \$payment - 200 になる.\$paymentが200未満であるか\$num_cansが0以下であるとき,\$num_cansと\$paymentは変わらない.
入力仕様
- x は必ず1000以下の非負整数である.
- プログラムの実行中で,\$payment が1000000を超えることはない.
- initialize_vending_machineの実行後にのみ,show_vending_machine, pay(x), pay_back, buyは実行される.
出力仕様
- initialize_vending_machine, show_vending_machine, pay(x), pay_back, buyを実行したとき,実行後の \$num_cansと\$paymentの値を並べ,配列として出力する.
例
irb> initialize_vending_machine
=> [5, 0]
irb> pay 100
=> [5, 100]
irb> pay 150
=> [5, 250]
irb> buy
=> [4, 50]
irb> buy
=> [4, 50]
irb> show_vending_machine
=> [4, 50]
irb> pay 200
=> [4, 250]
irb> buy
=> [3, 50]
irb> pay 1000
=> [3, 1050]
irb> buy
=> [2, 850]
irb> buy
=> [1, 650]
irb> buy
=> [0, 450]
irb> buy
=> [0, 450]
irb> initialize_vending_machine
=> [5, 0]
提出法
CEDにて,プログラムを作成したディレクトリで以下を実行せよ.
% /ced-home/staff/enshu1p/checker_d2.rb ファイル名
「Submission successfully completed.」と表示されれば,提出が完了したことになる.
[一覧に戻る]