mks616
March 28, 2025, 1:23pm
1
Tell us what’s happening:
Hi, here’s my problem: I’m absolutely sure my code does what it needs to, still I can’t pass the last test and the tests that depend on specific content of cid array only pass when I edit this array to match the test conditions. I suppose the lesson is broken? Or is there a workaround?
Your code so far
<!-- file: index.html -->
/* file: script.js */
/* file: styles.css */
Your browser information:
User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Challenge Information:
Build a Cash Register Project - Build a Cash Register
sanity
March 28, 2025, 1:28pm
2
Without seeing your code it’s impossible to say. From the description it sounds like your code might depend on some additional global variables, instead of performing certain calculations every time purchase is made.
ILM
March 28, 2025, 5:55pm
3
Hey there,
Please update the message to include your code. The code was too long to be automatically inserted by the help button.
When you enter a code, please precede it with a separate line of three backticks and follow it with a separate line of three backticks to make it easier to read.
You can also use the “preformatted text” tool in the editor (</>
) to add backticks around text.
See this post to find the backtick on your keyboard.
Note: Backticks (`) are not single quotes (').
mks616
March 29, 2025, 2:32pm
4
Sorry - first time I’m posting here! Here’s my code:
const cash = document.getElementById("cash");
const changeDue = document.getElementById("change-due");
const purchaseBtn = document.getElementById("purchase-btn");
let price = 19.5;
let cid = [
['PENNY', 0],
['NICKEL', 0.5],
['DIME', 0],
['QUARTER', 0],
['ONE', 0],
['FIVE', 0],
['TEN', 0],
['TWENTY', 0],
['ONE HUNDRED', 0]
];
let order = cid.reverse();
const purchase = () => {
let change = cash.value - price;
let cidTotal = cid[0][1] + cid[1][1] + cid[2][1] + cid [3][1] + cid [4][1] + cid [5][1] + cid [6][1] + cid[7][1] + cid[8][1]
console.log("cid:" + cid);
console.log("cash:" + cash.value);
console.log("change:" + change);
console.log("order" + order);
console.log("total" + cidTotal);
if (cash.value < price) {alert("Customer does not have enough money to purchase the item")}
if (change === 0) {changeDue.innerText = "No change due - customer paid with exact cash"}
else if (cidTotal === change) {changeDue.innerText = "Status: CLOSED"}
else {changeDue.innerText = "Status: OPEN "};
if (change > 100 && order[0][1] > 0){
let coinsAvailable = order[0][1] / 100;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 100);
if (coins <= coinsAvailable) {
cid[0][1] -= coins * 100;
changeDue.innerText += ` ONE HUNDRED: $${coins * 100} `;
change -= coins * 100;
} else {
cid[0][1] -= coinsAvailable * 100;
changeDue.innerText += ` ONE HUNDRED: $${coinsAvailable * 100} `;
change -= coinsAvailable * 100;
}
};
if (change > 20 && order[1][1] > 0){
let coinsAvailable = order[1][1] / 20;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 20);
if (coins <= coinsAvailable) {
cid[1][1] -= coins * 20;
changeDue.innerText += ` TWENTY: $${coins * 20} `;
change -= coins * 20;
change = change.toFixed(2);
console.log(change);
} else {
cid[1][1] -= coinsAvailable * 20;
changeDue.innerText += ` TWENTY: $${coinsAvailable * 20} `;
change -= coinsAvailable * 20;
change = change.toFixed(2);
console.log(change);
}
};
if (change > 10 && order[2][1] > 0){
let coinsAvailable = order[2][1] / 10;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 10);
if (coins <= coinsAvailable) {
cid[2][1] -= coins * 10;
changeDue.innerText += ` TEN: $${coins * 10} `;
change -= coins * 10;
change = change.toFixed(2);
} else {
cid[2][1] -= coinsAvailable * 10;
changeDue.innerText += ` TEN: $${coinsAvailable * 10} `;
change -= coinsAvailable * 10;
change = change.toFixed(2);
}
};
if (change > 5 && order[3][1] > 0){
let coinsAvailable = order[3][1] / 5;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 5);
if (coins <= coinsAvailable) {
cid[3][1] -= coins * 5;
changeDue.innerText += ` FIVE: $${coins * 5} `;
change -= coins * 5;
change = change.toFixed(2);
} else {
cid[3][1] -= coinsAvailable * 5;
changeDue.innerText += ` FIVE: $${coinsAvailable * 5} `;
change -= coinsAvailable * 5;
change = change.toFixed(2);
}
};
if (change > 1 && order[4][1] > 0){
let coinsAvailable = order[4][1] / 1;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 1);
if (coins <= coinsAvailable) {
cid[4][1] -= coins * 1;
changeDue.innerText += ` ONE: $${coins * 1} `;
change -= coins * 1;
change = change.toFixed(2);
} else {
cid[4][1] -= coinsAvailable * 1;
changeDue.innerText += ` ONE: $${coinsAvailable * 1} `;
change -= coinsAvailable * 1;
change = change.toFixed(2);
}
};
if (change > 0.25 && order[5][1] > 0){
let coinsAvailable = order[5][1] / 0.25;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 0.25);
if (coins <= coinsAvailable) {
cid[5][1] -= coins * 0.25;
changeDue.innerText += ` QUARTER: $${coins * 0.25} `;
change -= coins * 0.25;
change = change.toFixed(2);
} else {
cid[5][1] -= coinsAvailable * 0.25;
changeDue.innerText += ` QUARTER: $${coinsAvailable * 0.25} `;
change -= coinsAvailable * 0.25;
change = change.toFixed(2);
}
};
if (change > 0.1 && order[6][1] > 0){
let coinsAvailable = order[6][1] / 0.1;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 0.1);
if (coins <= coinsAvailable) {
cid[6][1] -= coins * 0.1;
changeDue.innerText += ` DIME: $${coins * 0.1} `;
change -= coins * 0.1;
change = change.toFixed(2);
} else {
cid[6][1] -= coinsAvailable * 0.1;
changeDue.innerText += ` DIME: $${coinsAvailable * 0.1} `;
change -= coinsAvailable * 0.1;
change = change.toFixed(2);
}
};
if (change > 0.05 && order[7][1] > 0){
let coinsAvailable = order[7][1] / 0.05;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 0.05);
if (coins <= coinsAvailable) {
cid[7][1] -= coins * 0.05;
changeDue.innerText += ` NICKEL: $${coins * 0.05} `;
change -= coins * 0.05;
change = change.toFixed(2);
} else {
cid[7][1] -= coinsAvailable * 0.05;
changeDue.innerText += ` NICKEL: $${coinsAvailable * 0.05} `;
change -= coinsAvailable * 0.05;
change = change.toFixed(2);
}
};
if (change > 0.01 && order[8][1] > 0){
let coinsAvailable = order[8][1] / 0.01;
console.log("Remaining change: " + change);
console.log("Coins available: " + coinsAvailable);
let coins = Math.floor(change / 0.01);
if (coins <= coinsAvailable) {
cid[8][1] -= coins * 0.01;
changeDue.innerText += ` PENNY: $${coins * 0.01} `;
change -= coins * 0.01;
change = change.toFixed(2);
} else {
cid[8][1] -= coinsAvailable * 0.01;
changeDue.innerText += ` PENNY: $${coinsAvailable * 0.01} `;
change -= coinsAvailable * 0.01;
change = change.toFixed(2);
}
};
console.log("end change:" + change);
console.log("end cid:" + cid);
if (change > 0.01 && order[8][1] <= 0.01) {changeDue.innerText = 'Status: INSUFFICIENT_FUNDS'};
}
purchaseBtn.addEventListener("click", purchase);
Try putting that global order
array inside purchase
.
Really, I’d get rid of this global variable.
ILM
March 29, 2025, 6:51pm
7
share your html too please
mks616
March 31, 2025, 5:05pm
8
Wow, it was THAT simple Thank you very much, I can finally move on to the next one!