Hi,
I am working on Cash Register project. My code passes all tests except test #3 -
checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]) should return {status: "OPEN", change: [["TWENTY", 60], ["TEN", 20], ["FIVE", 15], ["ONE", 1], ["QUARTER", 0.5], ["DIME", 0.2], ["PENNY", 0.04]]}.
Not sure why it is failing. In console log it shows the expected output for this test case. Please help.
Below is my code -
function checkCashRegister(price, cash, cid) {
var changeBack = {};
var currencyUnit = [0.01, 0.05, 0.1, 0.25, 1, 5, 10, 20, 100];
var changeDue = cash - price;
console.log("changeDue=" + changeDue);
var cidTotal = cid.map(function(x){
return x[1];
}).reduce(function(a, b){
return a + b;
});
cidTotal = cidTotal.toFixed(2);
console.log("cidTotal=" + cidTotal);
if(cidTotal < changeDue) {
changeBack.status = "INSUFFICIENT_FUNDS";
changeBack.change = [];
} else if(cidTotal == changeDue){
changeBack.status = "CLOSED";
changeBack.change = cid;
} else {
var multiple = 0;
var changeArr = [];
for(var i=cid.length-1; i>=0; i--){
if(changeDue >= currencyUnit[i]){
if(changeDue < cid[i][1]) {
multiple = parseInt(changeDue/currencyUnit[i]) * currencyUnit[i];
changeDue = (changeDue % currencyUnit[i]).toFixed(2);
changeArr.push([cid[i][0], multiple]);
} else {
changeDue = (changeDue - cid[i][1]).toFixed(2);
changeArr.push([cid[i]]);
}
}
}
if(changeDue == 0){
changeBack.status = "OPEN";
changeBack.change = changeArr;
} else {
changeBack.status = "INSUFFICIENT_FUNDS";
changeBack.change = [];
}
}
console.log(changeBack);
// Here is your change, ma'am.
return changeBack;
}
// Example cash-in-drawer array:
// [["PENNY", 1.01],
// ["NICKEL", 2.05],
// ["DIME", 3.1],
// ["QUARTER", 4.25],
// ["ONE", 90],
// ["FIVE", 55],
// ["TEN", 20],
// ["TWENTY", 60],
// ["ONE HUNDRED", 100]]
checkCashRegister(19.5, 20, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]]);
Link to the project: https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/cash-register