題目:數組
設計一個收銀程序 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".