前提・実現したいこと
自動販売機のお釣り計算の機能を作成しています。
返却ボタンが押された際にメソッドが動く仕様にしています。
ここまで2通り(if文・for文)ほど書いてきたが、
演算子のみの使用でfor文やif文は使用せずに記述できるそうです。
お釣りの硬貨の種類は500円、100円、50円、10円。
各硬貨の上限枚数は99枚。
自動販売機に投入することが可能な金額もそれぞれの硬貨を99枚投下した際の和となっております。
少しひらめきのような問題とのことですが、上記2つの書き方以外に見つかりません。
お教えいただけますと幸いです。
該当のソースコード
***********_Miasuu = 各硬貨の枚数を入れる変数
MAISUUJOUGEN = 99 (硬貨の最大投入枚数)
Tounyukingaku =投入金額の現在数値
***********KOUKA = 各硬貨の値段
①for文使用 for (Fivehundred_Miasuu = 0; Fivehundred_Miasuu < MAISUUJOUGEN && Tounyukingaku >= FIVEHKOUKA; Fivehundred_Miasuu ++) {Tounyukingaku = Tounyukingaku - FIVEHKOUKA;} for (Onehundred_Miasuu = 0; Onehundred_Miasuu < MAISUUJOUGEN && Tounyukingaku >= ONEHKOUKA; Onehundred_Miasuu++) {Tounyukingaku = Tounyukingaku - ONEHKOUKA; } for (Fifty_Miasuu = 0; Fifty_Miasuu < MAISUUJOUGEN && Tounyukingaku >= FIFTYKOUKA; Fifty_Miasuu ++) {Tounyukingaku = Tounyukingaku - FIFTYKOUKA;} for (Ten_Miasuu = 0; Ten_Miasuu < MAISUUJOUGEN && Tounyukingaku >= TENKOUKA; Ten_Miasuu++) {Tounyukingaku = Tounyukingaku - TENKOUKA;}
②if文使用 AmariKingaku = 各硬貨で割って余った金額を借り代入しておく変数 // 投入金額が硬貨の値以上 if (tounyuukinngaku >= FIVEHKOUKA) { // 500円硬貨の枚数 Fivehundred_Miasuu = tounyuukinngaku / FIVEHKOUKA; // 500円硬貨の枚数が枚数上限より大きい場合 if (Fivehundred_Miasuu > MAISUUJOUGEN) { // 余剰金の計算 AmariKingaku = (Fivehundred_Miasuu - MAISUUJOUGEN) * FIVEHKOUKA; // 500円硬貨の枚数 = 上限枚数 Fivehundred_Miasuu = MAISUUJOUGEN; // 投入金額の更新 tounyuukinngaku = tounyuukinngaku - (FIVEHKOUKA * MAISUUJOUGEN); // 投入金額 = 投入金額 + 余剰金 tounyuukinngaku = tounyuukinngaku + AmariKingaku; } else { tounyuukinngaku = tounyuukinngaku - (FIVEHKOUKA * Fivehundred_Miasuu); } } ・ ・ ・ ・ ・ ・ ・ ・ //これを各硬貨行い、最後に各硬貨の枚数を取得しました。
C#
補足情報(FW/ツールのバージョンなど)
Visual Studio 2019を使用しています。
回答2件
あなたの回答
tips
プレビュー