**Hello all,
I made some code for the cash register challenge and when testing by calling the checkCashRegister function i get “insufficient funds”, when i should get following :
{status: “OPEN”, change: [[“QUARTER”, 0.5]]}
I tried to visualize my code with “http://www.pythontutor.com/javascript.html#mode=display” and i get the following log (picture below):
SO if the price accumulates like that, what could be wrong in my code?
I ran out of ideas, so I appreciate any amount of help. Thx in advance. **
Your code so far
closed: 'CLOSED',
insufficientFunds: 'INSUFFICIENT_FUNDS',
open: 'OPEN'
};
var currency = [
{ name: "ONE HUNDRED", val: 100 },
{ name: "TWENTY", val: 20 },
{ name: "TEN", val: 10 },
{ name: "FIVE", val: 5 },
{ name: "ONE", val: 1 },
{ name: "QUARTER", val: 0.25 },
{ name: "DIME", val: 0.1 },
{ name: "NICKEL", val: 0.05 },
{ name: "PENNY", val: 0.01 }
];
function checkCashRegister (price, cash, cid) {
let cashReg = { status: null, change: [] };
var change = cash - price;
var changeAv = getTotalCashReg(cid);
cashReg.status = getTotalCashRegisterStatus(change, changeAv);
if (cashReg.status === status.insufficientFunds) {
cashReg.change = [];
return cashReg;
}
cashReg.change = getCustomerChange(change, cid);
if (change > getTotalCashReg(cashReg.change)) {
cashReg.status = status.insufficientFunds;
cashReg.change = [];
}
if (cashReg.status === status.closed) {
cashReg.change = [...cid];
}
console.log(cashReg.status);
return cashReg;
}
function getCustomerChange (change, changeinDrawer) {
const changeAr = [];
for (let i = changeinDrawer.length - 1; i >= 0; i--) {
const coinName = changeinDrawer[i][0];
const coinTotal = changeinDrawer[i][1];
const coinValue = currency[coinName];
let coinAmount = (coinTotal / coinValue);
let coinsToReturn = 0;
while (change >= coinValue && coinAmount > 0) {
change -= coinValue;
coinAmount--;
coinsToReturn++;
}
if (coinsToReturn > 0) {
changeAr.push([coinName, coinsToReturn * coinValue]);
}
}
return changeAr;
}
function getTotalCashRegisterStatus (change, changeAv) {
if (Number(change) > Number(changeAv)) {
return status.insufficientFunds;
} else if (Number(change) > Number(changeAv)) {
return status.open;
} else {
return status.closed;
}
}
function getTotalCashReg (cid) {
let total = 0;
for (let change of cid) {
let cv = change[1];
total += cv;
}
return total;
}
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]]));
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36
.
Link to the challenge: