【クラス・構造体メニュー】> 【静的メンバ】STEP: 5 デフォルト引数 (paizaランク B 相当) [難易度: 1590 ±19]
※リンク先へ移動するためには[paiza]へのログインが必要です。
居酒屋で働きながらクラスの勉強をしていたあなたは、お客さんをクラスに見立てることで店内の情報を管理できることに気付きました。
全てのお客さんは、ソフトドリンクと食事を頼むことができます。加えて 20 歳以上のお客さんはお酒を頼むことができます。
20 歳未満のお客さんがお酒を頼もうとした場合はその注文は取り消されます。
また、お酒(ビールを含む)を頼んだ場合、以降の全ての食事の注文 が毎回 200 円引きになります。
今回、この居酒屋でビールフェスをやることになり、ビールの注文が相次いだため、いちいちビールの値段である 500 円を書くのをやめ、伝票に注文の種類と値段を書く代わりに 0 とだけを書くことになりました。
店内の全てのお客さんの数と注文の回数、各注文をしたお客さんの番号とその内容が与えられるので、各お客さんの会計を求めてください。
入力値(例)
3 5
19
43
22
2 0
2 food 4333
1 0
2 0
1 food 4606
出力値(例)
4606
5133
0
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
<?php class Customer { public $payment = 0; public function __construct($payment) { $this->payment = $payment = 0; } public function GetPayment() { return $this->payment; } public function OrderFood($price) { $this->payment += $price; } public function OrderSoftDrink($price) { $this->payment += $price; } public function OrderAlcohol($price = 500) { // echo "お酒は20歳になってから"; } } class AdultCustomer extends Customer { public $discount; public function __construct($discount) { $this->discount = $discount = false; } public function OrderFood($price) { $this->payment += $this->discount ? $price - 200 : $price; } public function OrderAlcohol($price = 500) { $this->payment += $price; if (!$this->discount) { $this->discount = true; } } } list($n, $k) = explode(" ", trim(fgets(STDIN))); for($i=0; $i<$n; $i++) { $age = trim(fgets(STDIN)); if($age<20) { $customers[] = new Customer($age); } else { $customers[] = new AdultCustomer($age); } } for($i=0; $i<$k; $i++) { $m = explode(" ", trim(fgets(STDIN))); $index = $m[0]; $index--; if($m[1] == 0) { $order = "beer"; } else { $order = $m[1]; $price = $m[2]; } switch($order) { case "food": $customers[$index]->OrderFood($price); break; case "softdrink": $customers[$index]->OrderSoftDrink($price); break; case "alcohol": $customers[$index]->OrderAlcohol($price); break; case "beer": $customers[$index]->OrderAlcohol(); break; } } //print_r($customers); for($i=0; $i<$n; $i++) { echo $customers[$i]->GetPayment(). "\n"; } ?> |