• 締切済み

自販機での金銭収受を想定したプログラムについて

こんにちは。 自販機での金銭収受を想定したプログラムについての質問です。 下記のプログラムに、もしお釣りが100円だとして、100円玉が無い場合に50円玉2枚を代替して支払うような機能が欲しいのですが、いい考えが浮かびません。どなたかヒントなどを教えて下さい。お願いします。 (・・・は続くことを示しています) Dim kouka(4) As Integer '自販機にあるつり銭の枚数 Dim zandaka(4) As Integer 'その金種が必要な枚数 Dim kekka(4) As Integer '硬貨の設定 kouka(1)=500 以下、100、50、10を入れる 'つり銭残金の設定 zandaka(1)=Val(TextBox21) 以下2,3,4同様 '入れた金額と買う金額 sounyu=(Val(TextBox1) * kouka(1)) + ・・・ kounyu=Val(TextBox5) If sounyu<kounyu Then TextBox100="販売不可能" Else oturi = sounyu – kounyu TextBox6 = oturi 'つり銭の残高総計 zandakasum=(zandaka(1)*kouka(1))+・・・ If zandakasum< oturi Then TextBox100 = "おつりがありません" Else '各金額のお返し枚数を決める For i=1To4 kekka(i)=oturi\kouka(i) oturi=oturiModkouka(i) zandaka(i)=zandaka(i) - kekka(i) Next i For i=1To4 If zandaka(i)<0 Then TextBox100 = "おつりが合わないので販売できません。" End If Next i 'おつりの内訳表示 TextBox11=kekka(1) 以下2,3,4同様 '各金種の残り枚数(残高)の表示 TextBox21=zandaka(1) 以下2,3,4同様 End If End If

みんなの回答

回答No.1

『おつりとして出せる金種を引いていく』というのはどうでしょう。 以下、日本語で書きます。 おつりは980円 →500円を出す。 →100円を出す。 →100円を出す。 →100円を出す。 →100円を出す。 →50円を出す。 →10円を出す。 →10円を出す。 →10円を出す。 金種を格納した配列[500,100,50,10]を用意すれば、簡潔なコーディングができると思います。 100円→50円2枚というのも、100円が無くなれば金種配列の添字を動かし50円を指すようにし、(金額的に、または枚数的に)引けるだけ引いていけば良いと思います。 伝わり難かったらごめんなさい。

1724
質問者

お礼

アドバイスありがとうございました。 自動販売機内のつり銭と返さなければならない両金種の枚数を500から順々に比較していき、それぞれ適切な処理を行うかたちで、無事できました。

関連するQ&A