I receive the following errors with the code below:
-
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]])should return{status: "OPEN", change: [["QUARTER", 0.5]]}. -
Failed:
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]]}.
`function checkCashRegister(price, cash, cid) {
const currencyUnit = [
["PENNY", 0.01],
["NICKEL", 0.05],
["DIME", 0.10],
["QUARTER", 0.25],
["ONE", 1.00],
["FIVE", 5.00],
["TEN", 10.00],
["TWENTY", 20.00],
["ONE HUNDRED", 100.00]
];
let changeDue = cash - price;
let totalCid = cid.reduce((acc, curr) => acc + curr[1], 0);
if (totalCid < changeDue) {
return { status: "INSUFFICIENT_FUNDS", change: [] };
} else if (totalCid === changeDue) {
return { status: "CLOSED", change: cid };
} else {
let changeArr = [];
cid = cid.reverse();
for (let i = 0; i < currencyUnit.length; i++) {
let unitName = currencyUnit[i][0];
let unitValue = currencyUnit[i][1];
let unitTotal = cid[i][1];
let amountToReturn = 0;
while (changeDue >= unitValue && unitTotal >= unitValue) {
amountToReturn += unitValue;
changeDue -= unitValue;
changeDue = Math.round(changeDue * 100) / 100; // Fix to 2 decimal places
unitTotal -= unitValue;
}
if (amountToReturn > 0) {
changeArr.push([unitName, amountToReturn]);
}
}
if (changeDue > 0) {
return { status: "INSUFFICIENT_FUNDS", change: [] };
} else {
return { status: "OPEN", change: changeArr };
}
}
}
// Example usage:
console.log(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]
]));
console.log(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]
]));
`