你如何计算交易的最小硬币变化?

nor*_*023 0 .net vb.net coin-change

嘿大家.我有个问题.我正在使用Visual Basic Express,我应该从事务中计算更改.

现在我会使用什么代码?我有一部分工作,但它开始有点混乱.

谢谢.

对于想要了解更多信息的人:

假设我有一美元,我去商店买东西.我必须要求用户输入他们花费的金额,然后计算更改并打印到屏幕上.

然后我应该使用最少数量的季度,硬币和硬币,并将其打印到屏幕上.

任何帮助将不胜感激.

pax*_*blo 7

我将在这里走出困境并假设OP正在谈论变更,就像从交易中退回的钱一样.

如果是这样,那么它可能是家庭作业,所以只有伪代码.

最简单的第一次尝试方法如下.让我们cost知道交易的成本和tendered交付的金额(以美分为单位),让我们进一步假设您的经济只有美元账单,季度和便士(以使我的代码更小).

change = tendered - cost

if change < 0:
    print "Pay up some more cash, cheapskate!"
    stop

dollars = 0
quarters = 0
cents = 0

while change >= 100:
    dollars = dollars + 1
    change = change - 100

while change >= 25:
    quarters = quarters + 1
    change = change - 25

while change >= 1:
    cents = cents + 1
    change = change - 1

print dollars " dollar(s), " quarters " quarter(s), and " cents " cent(s)."
Run Code Online (Sandbox Code Playgroud)

现在无疑可以通过使用模运算和除运算符来提高效率,但我将其作为读者的练习.


我的建议是用铅笔和一些纸张坐下以下栏目(以10美元的价格购买2美元和9点三分钱):

tendered      cost    change   dollars  quarters     cents
--------  --------  --------  --------  --------  --------
    1000       293
Run Code Online (Sandbox Code Playgroud)

然后使用纸张中的当前值并在新的值发生变化时写下您的脑海中的代码.

这将极大地帮助您理解.


为了回应您的更新:

我有1美元,我去商店买东西.我必须要求用户输入他们花费的金额,然后计算更改并打印到屏幕上.然后我应该使用最少数量的四分之一,硬币,镍币和便士然后将其打印到屏幕上.

这与我上面的内容非常相似:

tendered = 100
input cost
cost = int (cost * 100)
change = tendered - cost
if change < 0:
    print "Pay up some more cash, cheapskate!"
    stop
print "Change is ", (format "$9.99", change / 100)

quarters = 0, dimes = 0, nickels = 0, pennies = 0

while change >= 25:
    quarters = quarters + 1
    change = change - 25

while change >= 10:
    dimes = dimes + 1
    change = change - 10

while change >= 5:
    nickels = nickels + 1
    change = change - 5

while change >= 1:
    pennies = pennies + 1
    change = change - 1

print quarters, " quarters"
print dimes   , " dimes"
print nickels , " quarters"
print pennies , " pennies"
Run Code Online (Sandbox Code Playgroud)