题目:数组
设计一个收银程序 checkCashRegister()
,其把购买价格(price
)做为第一个参数 , 付款金额 (cash
)做为第二个参数, 和收银机中零钱 (cid
) 做为第三个参数.spa
cid
是一个二维数组,存着当前可用的找零.设计
当收银机中的钱不够找零时返回字符串 "Insufficient Funds"
. 若是正好则返回字符串 "Closed"
.code
不然, 返回应找回的零钱列表,且由大到小存在二维数组中.blog
当你遇到困难的时候,记得查看错误提示、阅读文档、搜索、提问。ip
这是一些对你有帮助的资源:ci
1 function checkCashRegister(price, cash, cid) { 2 var change; 3 var sumCid = 0; 4 5 // Here is your change, ma'am. 6 7 //找零(change),付款(cash),购买价格(price),收银机中零钱(cid) 8 change = cash - price; 9 10 //计算零钱总额 11 for (var i = 0; i < cid.length; i++) { 12 sumCid += cid[i][1]; 13 } 14 sumCid = Number(sumCid.toFixed(2)); //保留两位小数 15 16 if (sumCid < change) { 17 return "Insufficient Funds"; //余额不足 18 } else if (sumCid === change) { 19 return "Closed"; 20 } else { 21 // 1.零钱不够,返回余额不足 22 // 2.零钱足够,找回零钱 23 return overChange(change, cid, sumCid); 24 } 25 } 26 27 function overChange(change, arr, sumCid) { 28 var array = []; 29 var len = arr.length; 30 31 for (var i = len - 1; i >= 0; i--) { 32 if (arr[i][1] === 0) continue; 33 34 if (arr[i][1] < change) { 35 array.push(arr[i]); 36 change -= arr[i][1]; 37 change = Number(change.toFixed(2)); 38 } 39 40 else if (arr[i][1] > change) { 41 var x = arr[i][0]; // 取得零钱名称 42 var y = 0; 43 44 switch(x) { 45 case "ONE HUNDRED": 46 y = Math.floor(change / 100) * 100; 47 break; 48 case "TWENTY": 49 y = Math.floor(change / 20) * 20; 50 break; 51 case "TEN": 52 y = Math.floor(change / 10) * 10; 53 break; 54 case "FIVE": 55 y = Math.floor(change / 5) * 5; 56 break; 57 case "ONE": 58 y = Math.floor(change / 1); 59 break; 60 case "QUARTER": 61 y = Math.floor(change / 0.25) * 0.25; 62 break; 63 case "DIME": 64 y = Math.floor(change / 0.10) * 0.10; 65 break; 66 case "NICKEL": 67 y = Math.floor(change / 0.05) * 0.05; 68 break; 69 case "PENNY": 70 y = Math.floor(change / 0.01) * 0.01; 71 break; 72 } 73 74 if (y === 0 && sumCid - arr[i][1] < change) { 75 return "Insufficient Funds"; 76 } 77 78 else if (y === 0) { 79 continue; 80 } 81 82 else { 83 if (y < 1) { 84 y = y; 85 } 86 var array1 = []; 87 array1.push(arr[i][0]); 88 array1.push(y); 89 array.push(array1); 90 change -= y; 91 change = Number(change.toFixed(2)); 92 } 93 } 94 } 95 96 if (change === 0) { 97 return array; 98 } else { 99 return "Insufficient Funds"; 100 } 101 102 } 103 104 checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]]);
checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]])
应该返回一个数组.
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
应该返回一个字符串.
checkCashRegister(19.50, 20.00, [["PENNY", 0.50], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
应该返回一个字符串.
checkCashRegister(19.50, 20.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]])
应该返回
[["QUARTER", 0.50]]
.
checkCashRegister(3.26, 100.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]])
应该返回
[["TWENTY", 60.00], ["TEN", 20.00], ["FIVE", 15], ["ONE", 1], ["QUARTER", 0.50], ["DIME", 0.20], ["PENNY", 0.04]]
.
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
应该返回 "Insufficient Funds".
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
应该返回 "Insufficient Funds".
checkCashRegister(19.50, 20.00, [["PENNY", 0.50], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
应该返回 "Closed".