0

そのため、金額を実際のさまざまな紙幣と硬貨の数に分割する方法についてのアイデアが必要です。これは紛らわしいので、例を挙げましょう。

$16.32 - Sixteen dollars and thirty-two cents
One $10 bill
One $5 bill
One $1 bill
One Quarter ($0.25)
One Nickel ($0.05)
Two Pennies ($0.01)

ご覧のとおり、値に入る紙幣と硬貨の数を取得しているだけで、ユーザーの入力に応じて変化します。

これが私の現在のセットアップです(Visual Basic):

If 100 Mod amount < 0 Then
    If 50 Mod amount < 0 Then
         ' Continue this pattern until you get all the way down to the end ($0.01)
    Else  
        While amount > 50
            fiftiesAmount += 1
            amount -= 50
    End If
Else 
    While amount > 100 
        hundredsAmount += 1
        amount -= 100
End If

基本的に、各Ifステートメントは、合計金額がそのタイプの追加の請求金額を必要とするかどうかを判断し、作成済みの請求書/硬貨の金額に追加するか、次の金額に進みます。

これは物事を行うための効率的な方法ですか、それとも私の人生をより簡単にする/より高速なアルゴリズム/パターンを見逃しているのでしょうか?私のコードの人生をより簡単に読んでいる人は誰ですか? さらに詳細が必要な場合は、必要に応じて質問を編集させていただきます。

4

1 に答える 1

2

金額をセントに変換します (簡単です)。テストされている通貨の値で割り、その金額を残高から差し引きます (疑似コード)

Value = 16.32 * 100                  ' Convert to cents
If Value > 10000                     ' Hundreds
  Hundreds = Value / 10000           ' How many?
  Value = Value - (Hundreds * 10000) ' Reduce amount accordingly
End If

If Value > 5000                      ' Fifties
  Fifties = Value / 5000
  Value = Value - (Fifties * 5000)   
End If

If Value > 2000                      ' Twenties
  Twenties = Value / 2000
  Value = Value - (Twenties * 2000)
End If

100 未満になるまで繰り返し、その時点でコイン (50、25、10、5) から始めます。10 を超えると、ペニーに到達します。それらを保存し、値をその量だけ減らすと、値はゼロになるので、終了です。

于 2013-09-12T02:25:50.607 に答える