こんにちは。
自販機での金銭収受を想定したプログラムについての質問です。
下記のプログラムに、もしお釣りが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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
先頭アドレスとは何ですか?
-
配列を使わずに、変数名を動的...
-
unsigned char配列への入力の仕方
-
Excel、VBAのユーザーフォーム...
-
【C言語】配列の中に配列を入れ...
-
ExcelVBAで質問です。離れた二...
-
テキストファイルから文字列を...
-
パイソンの
-
C言語で巨大配列を作るにはどう...
-
【速いブラインドタッチ】手を...
-
複数の選択範囲の行番号を個別...
-
C# 配列の変数宣言について。
-
配列の参照渡しで型が一致しま...
-
【VBS】 フォルダ直下のファイ...
-
プログラムが書けません。
-
配列同士の文字列の比較
-
配列を空にすること.
-
C言語でのカンマ区切りについて
-
ポインタの配列のコンマについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報