こんにちは。
自販機での金銭収受を想定したプログラムについての質問です。
下記のプログラムに、もしお釣りが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円を指すようにし、(金額的に、または枚数的に)引けるだけ引いていけば良いと思います。
伝わり難かったらごめんなさい。
アドバイスありがとうございました。
自動販売機内のつり銭と返さなければならない両金種の枚数を500から順々に比較していき、それぞれ適切な処理を行うかたちで、無事できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
先頭アドレスとは何ですか?
-
C# 配列の変数宣言について。
-
CSVファイルのデータを2次元配...
-
2次元配列を戻り値とする関数?
-
C言語初心者 ポインタについて...
-
配列をEraseしてもメモリが開放...
-
市販のビンゴカードについて
-
なぜ配列は0から始まるのです...
-
複数の選択範囲の行番号を個別...
-
VB2010でのコントロール多次元...
-
VBで構造体の配列を関数に渡す...
-
Functionの戻り値を2次元配列...
-
配列を使わずに、変数名を動的...
-
LGノートPCグラムについて
-
ポインタの配列のコンマについて
-
if文の判定条件に配列
-
配列内の文字間を排他的論理和...
-
配列の参照渡しで型が一致しま...
-
テキストファイルから文字列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
先頭アドレスとは何ですか?
-
C言語で特定列だけを抽出して配...
-
配列の参照渡しで型が一致しま...
-
VBで構造体の配列を関数に渡す...
-
C++ vectorに配列をプッシュしたい
-
【速いブラインドタッチ】手を...
-
unsigned char配列への入力の仕方
-
配列をEraseしてもメモリが開放...
-
【C言語】配列の中に配列を入れ...
-
ExcelVBAで質問です。離れた二...
-
4勤2休のシフト作成
-
Functionの戻り値を2次元配列...
-
Redimした動的配列はEraseする...
-
配列を含む構造体の初期値について
-
複数の選択範囲の行番号を個別...
おすすめ情報