# Need some help with Exact Change

Need some help with Exact Change
0

#1

I have completed my algorithm but it would not pass. It says it does not pass this test - 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]]) should return [[“TWENTY”, 60.00], [“TEN”, 20.00], [“FIVE”, 15.00], [“ONE”, 1.00], [“QUARTER”, 0.50], [“DIME”, 0.20], [“PENNY”, 0.04]] even though it returns exactly what it is supposed to! Any ideas what is going on? thank you!

Here is my code

``````const bills = [100, 20, 10, 5, 1, 0.25, 0.10, 0.05, 0.01];

function checkCashRegister(price, cash, cid) {
let change = cash - price;

let cidTotal = Math.round(cid.reduce(function(acc, curr) {
return acc + curr[1];
}, 0) * 100) / 100;

if (change > cidTotal) {
return "Insufficient Funds";
}

if (change === cidTotal) {
return "Closed";
}
let i = 0;

let moneyBack = cid.reduceRight(function(acc, curr) {

if (curr[1] && change / bills[i] >= 1) {
let item;

if ((change - curr[1]) >= 0) {
item = curr[1];
change = Math.round((change - curr[1]) * 100) / 100;

} else {
item = bills[i] * Math.floor(change / bills[i]);
change = Math.round((change % bills[i]) * 100) / 100;
}

acc.push([curr[0], item]);

}

i++;
return acc;

}, []);

if (change > 0) {
return "Insufficient Funds";
}

return moneyBack;
}

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]]);
``````

#2

After refreshing the page for a few times it passed… I guess it was something wrong with the website.