Tell us what’s happening:
The way this problem is designed, I guess there’s some problem with the 5th test. can anyone help me with what I should do to return all the denominations
only when the status is closed.
Thanks in advance!
Your code so far
function checkCashRegister(price, cash, cid) {
let denom = [
{ name: "ONE HUNDRED", val: 100.0 },
{ name: "TWENTY", val: 20.0 },
{ name: "TEN", val: 10.0 },
{ name: "FIVE", val: 5.0 },
{ name: "ONE", val: 1.0 },
{ name: "QUARTER", val: 0.25 },
{ name: "DIME", val: 0.1 },
{ name: "NICKEL", val: 0.05 },
{ name: "PENNY", val: 0.01 }
];
let change = cash-price;
let changeArr=[],f=0,ctr=0;
let totalCash =0;
cid.map(item=>{
totalCash+=item[1];
denom.map(den=>{
if(den.name===item[0]){
den.fund = item[1]
}
})
});
if(totalCash<change)
return {status: "INSUFFICIENT_FUNDS", change: []};
denom = denom.map((den)=>{
ctr=0; f=0;
while(change>=den.val && den.fund>=den.val){
change-=den.val;
den.fund-=den.val;
change = Math.round(change*100)/100;
den.fund = Math.round(den.fund*100)/100;
ctr++
f=1;
}
if(f===1){
changeArr.push([den.name, ctr*den.val])
}
return den;
})
totalCash=0;
denom.map(den=>{
totalCash+=den.fund;
})
if(change!==0){
return {status: "INSUFFICIENT_FUNDS", change: []};
}
console.log(totalCash, changeArr)
if(totalCash==0)
return {status:'CLOSED', change:changeArr};
return {status:'OPEN', change:changeArr};
}
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; rv:83.0) Gecko/20100101 Firefox/83.0
.
Challenge: Cash Register
Link to the challenge: