これ何て呼びますか Part2

こんにちは。
自販機での金銭収受を想定したプログラムについての質問です。
下記のプログラムに、もしお釣りが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

A 回答 (1件)

『おつりとして出せる金種を引いていく』というのはどうでしょう。


以下、日本語で書きます。

おつりは980円
→500円を出す。
→100円を出す。
→100円を出す。
→100円を出す。
→100円を出す。
→50円を出す。
→10円を出す。
→10円を出す。
→10円を出す。

金種を格納した配列[500,100,50,10]を用意すれば、簡潔なコーディングができると思います。
100円→50円2枚というのも、100円が無くなれば金種配列の添字を動かし50円を指すようにし、(金額的に、または枚数的に)引けるだけ引いていけば良いと思います。

伝わり難かったらごめんなさい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/12/20 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報