Hi! I´m having some troubles with this challenge. I´ve been able to pass all test except one:
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]]}
but mine is returning:
{ status: 'OPEN',
change:
[ [ 'TWENTY', 40 ],
[ 'TEN', 20 ],
[ 'FIVE', 5 ],
[ 'ONE', 1 ],
[ 'QUARTER', 0.5 ] ] }
I´ve tried to console.log everything, but still don´t know how to solve it.
Thanks in advance!
Your code so far
function checkCashRegister(price, cash, cid) {
let cashInDrawer = cid;
let cashInDrawerReverse = cashInDrawer.reverse();
let currencyUnits = [
["ONE HUNDRED", 100],
["TWENTY", 20],
["TEN", 10],
["FIVE", 5],
["ONE", 1],
["QUARTER", 0.25],
["DIME", 0.1],
["NICKEL", 0.05],
["PENNY", 0.01]
];
let availableMoney = [];
let totalAvailableMoney = 0;
let totalChange = cash - price;
let change = []
//Check the available money:
for(let index = 0; index < cid.length; index++){
availableMoney.push(cid[index][1]);
}
availableMoney.reverse();
//Total of available money:
for(let f = 0; f < availableMoney.length; f++){
totalAvailableMoney += availableMoney[f];
}
//Returns:
if(totalChange > totalAvailableMoney){
return {status: "INSUFFICIENT_FUNDS", change: []}
}
else if (totalChange === totalAvailableMoney){
return {status: "OPEN", change: cashInDrawer.reverse()}
}
else {
for(var i = 0; i < cashInDrawerReverse.length; i++){
if(cashInDrawerReverse[i][1] != 0){
while(totalChange >= currencyUnits[i][1]){
//Check if that currency unit is already present in the change array
let changeLength = change.length;
if(cashInDrawerReverse[i][1] > 0){
if(change[changeLength-1] == currencyUnits[i]){
change[changeLength-1][1] += currencyUnits[i][1]
} else{
change.push(currencyUnits[i]);
}
cashInDrawer[i][1] -= currencyUnits[i][1];
totalChange -= currencyUnits[i][1]
} else {
return {status: "INSUFFICIENT_FUNDS", change: []}
}
}
}
}
return {status: "OPEN", change: change}
}
}
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]]))
console.log(checkCashRegister(19.5, 20, [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]))
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
Challenge: JavaScript Algorithms and Data Structures Projects - Cash Register
Link to the challenge: