Arrays 在单个回路中更新多个蓄能器时遇到问题
这是一个函数,它接受输入“change”,并返回要返回给客户的25美分、10美分、5美分和1美分的明细 我的方法是:假设零钱是0.62美元Arrays 在单个回路中更新多个蓄能器时遇到问题,arrays,swift,function,Arrays,Swift,Function,这是一个函数,它接受输入“change”,并返回要返回给客户的25美分、10美分、5美分和1美分的明细 我的方法是:假设零钱是0.62美元 检查是零钱>四分之一。如果是,减去0.25美元。每次减去四分之一,四分之一累加器加1。重复此操作,直到无法再从剩余的更改值中减去四分之一。(这将导致两个季度) 此步骤后剩余的更改为$0.12 移到一角硬币上-每次从零钱中减去一角硬币时,在一角硬币累加器中加1 对镍币和便士重复上述步骤 虽然我可以轻松地遍历coinTray数组并减去值,但如何指示一旦数组移动到
func breakdown(change: Double) -> String {
var coinTray: [Double] = [0.25, 0.10, 0.05, 0.01]
var totalChange = change
var quarters = 0
var dimes = 0
var nickels = 0
var pennies = 0
while totalChange >= coinTray[0] {
totalChange -= coinTray[0]
quarters += 1
}
while totalChange >= coinTray[1] {
totalChange -= coinTray[1]
dimes += 1
}
while totalChange >= coinTray[2] {
totalChange -= coinTray[2]
nickels += 1
}
while totalChange >= coinTray[3] {
totalChange -= coinTray[3]
pennies += 1
}
return "You should have \(quarters) quarter(s), \(dimes) dime(s), \(nickels) nickel(s), and \(pennies) penny/ies."
}
我相信这在没有循环的情况下也能做同样的事情
func breakDown(change: Double) -> String {
var coinTray: [Double] = [0.25, 0.10, 0.05, 0.01]
var totalChange = change
var quarters = 0
var dimes = 0
var nickels = 0
var pennies = 0
quarters = Int(totalChange/coinTray[0])
totalChange = totalChange.truncatingRemainder(dividingBy: coinTray[0])
dimes = Int(totalChange/coinTray[1])
totalChange = totalChange.truncatingRemainder(dividingBy: coinTray[1])
nickels = Int(totalChange/coinTray[2])
totalChange = totalChange.truncatingRemainder(dividingBy: coinTray[2])
pennies = Int(totalChange * 100)
return "You should have \(quarters) quarter(s), \(dimes) dime(s), \(nickels) nickel(s), and \(pennies) penny/ies."
}
编辑:似乎OP想要这个答案
var coinTray: [Double] = [0.25, 0.10, 0.05, 0.01]
var quarters = 0
var dimes = 0
var nickels = 0
var pennies = 0
var coins = [quarters, dimes, nickels, pennies]
func breakDown(change: Double) -> String {
var totalChange = change
for i in 0..<coinTray.count {
coins[i] = Int(totalChange/coinTray[i])
totalChange = totalChange.truncatingRemainder(dividingBy: coinTray[i])
}
return "You should have \(quarters) quarter(s), \(dimes) dime(s), \(nickels) nickel(s), and \(pennies) penny/ies."
}
var coinTray:[Double]=[0.25,0.10,0.05,0.01]
var四分之一=0
变量dimes=0
var镍币=0
var pennies=0
var硬币=[四分之一硬币、一角硬币、五分镍币、便士]
func细分(更改:双)->字符串{
var totalChange=变更
对于0中的i.“我在这里解决了它,没有使用循环”,呃……您似乎在使用4。@RakeshaShastri是的,有4个while循环。但我想知道是否有办法将这些循环清理成一个循环,因为除了累加器之外,所有的循环都在重复。不使用任何循环如何?就像下面发布的答案一样?:)我已经编辑了答案。我想我明白您在寻找什么。但是这对于动态数量的变量是不实际的,在这种情况下,您必须使用元组数组,这对于这样一个简单的事情来说是复杂的。