Hello i’ve been working on the CashRegister Alorithm for a while now. I have a problem i can’t figure out. My Code works just fine. However i fail when i copy the code from Visual Studio Code to the free Code camp application. I’ve created some tests for the function. I fail all “OPEN” however in my dev environment everthing works perfectly!
let change = {
status: "OPEN",
change: []
};
function checkCashRegister(price, cash, cid) {
let cidCopy = JSON.parse(JSON.stringify(cid));
let currencyAmmount = [
["PENNY", 0.01],
["NICKEL", 0.05],
["DIME", 0.1],
["QUARTER", 0.25],
["ONE", 1],
["FIVE", 5],
["TEN", 10],
["TWENTY", 20],
["ONE HUNDRED", 100]
];
let dept = cash - price;
for (let coin = cid.length - 1; coin >= 0; coin--) {
while (dept > 0 & dept >= currencyAmmount[coin][1] & cid[coin][1] !== 0) {
if (cid[coin][1] !== 0) {
let coinValue = currencyAmmount[coin][1];
cid[coin][1] -= coinValue;
cid[coin][1] = Math.round(cid[coin][1]*100)/100;
dept -= coinValue;
dept = Math.round(dept * 100) / 100;
addToChange([currencyAmmount[coin][0], currencyAmmount[coin][1]]);
}
}
}
if (dept != 0) {
change.status = "INSUFFICIENT_FUNDS";
change.change = [];
} else if (cashInDrawer(cid)) {
change.status = "OPEN";
} else {
change.status = "CLOSED";
change.change = cidCopy;
}
return change;
}
// cic = cash in change
function addToChange(coinToAdd) {
if (change.change.length > 0) {
for (let cic = 0; cic < change.change.length; cic++) {
if (coinToAdd[0] === change.change[cic][0]) {
change.change[cic][1] += coinToAdd[1];
//console.log(change.change[cic][1]);
change.change[cic][1] = Math.round(change.change[cic][1] * 100) / 100;
//console.log(change.change[cic][1]);
break;
} else {
if (cic == change.change.length - 1) {
change.change.push(coinToAdd);
break;
}
}
}
} else {
change.change.push(coinToAdd);
}
}
function cashInDrawer(cid) {
for (let i = 0; i < cid.length; i++) {
if (cid[i][1] != 0) {
return true;
}
}
return false;
}
This are the tests:
//TESTs
//let what = checkCashRegister(19.5, 20, [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
//let solution = {status: "CLOSED", change: [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]};
//let what = 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]])
//let solution = { status: "OPEN", change: [["TWENTY", 60], ["TEN", 20], ["FIVE", 15], ["ONE", 1], ["QUARTER", 0.5], ["DIME", 0.2], ["PENNY", 0.04]] }
let what = 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]]);
let solution = { status: "OPEN", change: [["QUARTER", 0.5]] };
//let what = checkCashRegister(19.5, 20, [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
//let solution = {status: "OPEN", change: [["PENNY", 0.5]]};
function testAddToCash() {
addToChange(["PENNY", 0.01]);
addToChange(["PENNY", 0.01]);
addToChange(["ONE HUNDRED", 100]);
addToChange(["PENNY", 0.01]);
addToChange(["ONE HUNDRED", 100]);
console.log(change.change)
console.log("[ [ 'PENNY', 0.03 ], [ 'ONE HUNDRED', 200 ] ]");
if (JSON.stringify(change.change) == JSON.stringify([['PENNY', 0.03], ['ONE HUNDRED', 200]])) {
return "Works just fine!"
}
return "Wroooong!"
}
function testCashRegister(what, solution) {
console.log(what);
console.log(solution);
if (JSON.stringify(what) == JSON.stringify(solution)) {
return "yey";
}
return "ney";
}
console.log(testCashRegister(what, solution));
//console.log(testAddToCash());