Tell us what’s happening:
Hi. My code gives the correct answer but the test will fail.
Your code so far
function checkCashRegister(price, cash, cid) {
//This function is because toFixed() is chanching the variable to “String”
let roundOff = (num) => {
const x = Math.pow(10, 2);
return Math.round(num * x) / x;
}
const currencyTable = [
[“PENNY”, .01], [“NICKEL”, .05], [“DIME”, .1],
[“QUARTER”, .25], [“ONE”, 1], [“FIVE”, 5],
[“TEN”, 10], [“TWENTY”, 20], [“ONE HUNDRED”, 100],
];
let changeArray = [];
let result = {status: "", change: []};
let count = currencyTable.length - 1;
let takeMoney = 0;
let change = roundOff(cash - price);
let availableCyrrency = 0;
let getFromDrawer = 0;
let totalCash = roundOff(cid.reduce(
(money, item) =>
money + item[1], 0
));
if (change == totalCash) {
result.status = "CLOSED";
result.change = cid;
return result;
}
if (totalCash < change) {
result.status = 'INSUFFICIENT_FUNDS';
return result;
}
while(change > 0) {
takeMoney = Math.floor(change / currencyTable[count][1]);
change = roundOff(change % currencyTable[count][1]);
if (takeMoney > 0) {
availableCyrrency = roundOff(cid[count][1]);
getFromDrawer = roundOff(takeMoney * currencyTable[count][1]);
let diference = roundOff(availableCyrrency - getFromDrawer);
if (diference < 0) {
changeArray.push([currencyTable[count][0], availableCyrrency]);
change = roundOff(change + Math.abs(diference));
takeMoney = 0;
} else {
changeArray.push([currencyTable[count][0], getFromDrawer]);
}
}
count --;
}
let checkFinalChange = roundOff(changeArray.reduce(
(money, item) =>
money + item[1], 0
));
if (checkFinalChange != roundOff(cash - price)) {
result.status = 'INSUFFICIENT_FUNDS';
result;
}
result.status = "OPEN";
result.change = changeArray;
return result;
}
/*
const myCid = [
[“PENNY”, 1.01],
[“NICKEL”, 2.05],
[“DIME”, 3.1],
[“QUARTER”, 4.25],
[“ONE”, 90],
[“FIVE”, 55],
[“TEN”, 20],
[“TWENTY”, 60],
[“ONE HUNDRED”, 100]
];
*/
const myCid = [
[“PENNY”, 0.01],
[“NICKEL”, 0],
[“DIME”, 0],
[“QUARTER”, 0],
[“ONE”, 0],
[“FIVE”, 0],
[“TEN”, 0],
[“TWENTY”, 0],
[“ONE HUNDRED”, 0]
];
console.log(checkCashRegister(19.5, 20, myCid));
function checkCashRegister(price, cash, cid) {
//This function is because toFixed() is chanching the variable to "String"
let roundOff = (num) => {
const x = Math.pow(10, 2);
return Math.round(num * x) / x;
}
//Currency Table
const currencyTable = [
["PENNY", .01], ["NICKEL", .05], ["DIME", .1],
["QUARTER", .25], ["ONE", 1], ["FIVE", 5],
["TEN", 10], ["TWENTY", 20], ["ONE HUNDRED", 100],
];
let changeArray = [];
let result = {
status: '',
change: []
};
let count = currencyTable.length - 1;
let takeMoney = 0;
let change = roundOff(cash - price);
let availableCyrrency = 0;
let getFromDrawer = 0;
let totalCash = roundOff(cid.reduce(
(money, item) =>
money + item[1], 0
));
if (change == totalCash) {
result.status = "CLOSED";
result.change = cid;
return result;
}
if (totalCash < change) {
result.status = "INSUFFICIENT_FUNDS";
return result;
}
while(change > 0) {
takeMoney = Math.floor(change / currencyTable[count][1]);
change = roundOff(change % currencyTable[count][1]);
if (takeMoney > 0) {
availableCyrrency = roundOff(cid[count][1]);
getFromDrawer = roundOff(takeMoney * currencyTable[count][1]);
let diference = roundOff(availableCyrrency - getFromDrawer);
if (diference < 0) {
changeArray.push([currencyTable[count][0], availableCyrrency]);
change = roundOff(change + Math.abs(diference));
takeMoney = 0;
} else {
changeArray.push([currencyTable[count][0], getFromDrawer]);
}
}
count --;
}
let checkFinalChange = roundOff(changeArray.reduce(
(money, item) =>
money + item[1], 0
));
if (checkFinalChange != roundOff(cash - price)) {
result.status = 'INSUFFICIENT_FUNDS';
result;
}
result.status = "OPEN";
result.change = changeArray;
return result;
}
const money = checkCashRegister(19.5, 20, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
console.log(money);
Your browser information:
User Agent is: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/113.0
Challenge: JavaScript Algorithms and Data Structures Projects - Cash Register
Link to the challenge: