Tell us what’s happening:
Hello, my code is not passing test number 9. In my local run environment and in the preview on freeCodeCamp, both display ‘Status: INSUFFICIENT_FUNDS’.
Your code so far
const cashInput = document.getElementById('cash');
const purchaseBtn = document.getElementById('purchase-btn')
const changeDueEle = document.getElementById('change-due')
let price = 0;
let cid = []
let cidDen = [
["PENNY", 0.01],
["NICKEL", 0.05],
["DIME", 0.10],
["QUARTER", 0.25],
["ONE", 1.00],
["FIVE", 5.00],
["TEN", 10.00],
["TWENTY", 20.00],
["ONE HUNDRED", 100.00]
]
let cidA = [
["PENNY", 1.01],
["NICKEL", 2.05],
["DIME", 3.1],
["QUARTER", 4.25],
["ONE", 90],
["FIVE", 55],
["TEN", 20],
["TWENTY", 60],
["ONE HUNDRED", 100]
];
let cidB = [
["PENNY", 0.01],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0],
];
let cidC = [
["PENNY", 0.01],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 1],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0],
];
let cidD = [
["PENNY", 0.5],
["NICKEL", 0],
["DIME", 0],
["QUARTER", 0],
["ONE", 0],
["FIVE", 0],
["TEN", 0],
["TWENTY", 0],
["ONE HUNDRED", 0],
];
let cash = Number(cashInput.value)
let display = []
// console.log(cid[1][1])
let pageDisplay = []
const cashValues = (changeDue, cid) => {
let newChangeAmount = changeDue
let totalCid = 0
// console.log(...currentCid)
for (let i = 8; i >= 0; i--) {
totalCid += cid[i][1]
let totalDen = 0
let numOfUnit = Math.floor(newChangeAmount / cidDen[i][1]);
let numOfUnitCid = (cid[i][1] / cidDen[i][1]);
// console.log(cidDen[i][0], '-', 'NOU:', numOfUnit, 'NOUID:', numOfUnitCid, 'NCA:', newChangeAmount)
if (numOfUnit < numOfUnitCid && numOfUnit > 0 && numOfUnitCid > 0 && newChangeAmount > 0) {
for (let j = 0; j < numOfUnit; j++) {
// console.log(cidDen[i][0])
// console.log(display[display.length-2],cidDen[i][0])
totalDen += cidDen[i][1]
if (display[display.length - 1] != `${cidDen[i][0]}:`) {
display.push(`${cidDen[i][0]}:`)
}
newChangeAmount = Math.round(newChangeAmount * 100) / 100 - cidDen[i][1];
numOfUnitCid--
}
display.push(`$${totalDen}`)
} else if (numOfUnit > numOfUnitCid && numOfUnitCid > 0) {
for (let j = 0; j < numOfUnitCid; j++) {
totalDen += cidDen[i][1]
if (display[display.length - 1] != `${cidDen[i][0]}:`) {
display.push(`${cidDen[i][0]}:`)
}
newChangeAmount = (Math.round(newChangeAmount * 100) / 100) - cidDen[i][1];
}
display.push(`$${totalDen}`)
} else if (numOfUnit == numOfUnitCid && numOfUnitCid > 0) {
for (let j = 0; j < numOfUnit; j++) {
totalDen += cidDen[i][1]
if (display[display.length - 1] != `${cidDen[i][0]}:`) {
display.push(`${cidDen[i][0]}:`)
}
newChangeAmount = Math.round(newChangeAmount * 100) / 100 - cidDen[i][1];
numOfUnitCid--
// console.log(totalCid,cidDen[i][1])
if (totalCid > 0) {
totalCid = Math.round(totalCid * 100) / 100 - cidDen[i][1]
}
// console.log(cidDen[i][0],totalCid)
}
totalDen = Math.round(totalDen * 100) / 100
// console.log(totalDen)
display.push(`$${totalDen}`)
}
// console.log(cidDen[i][0], '-', 'NOU:', numOfUnit, 'NOUID:', numOfUnitCid, 'NCA:', newChangeAmount)
}
// console.log(newChangeAmount, totalCid,display.join(' '))
if (totalCid < 0.01) {
changeDueEle.textContent += `Status: CLOSED ${display.join(' ')}`
} else if (newChangeAmount > 0) {
changeDueEle.textContent += `Status: INSUFFICIENT_FUNDS`
} else if (totalCid > 0.01) {
changeDueEle.textContent += `Status: OPEN ${display.join(' ')}`
}
}
const registerTests = (price, cash, cid) => {
if (cash === price) {
console.log('No change due')
changeDueEle.textContent = "No change due - customer paid with exact cash"
} else if (cash < price) {
console.log('Not enough money')
alert('Customer does not have enough money to purchase the item')
} else if (cash > price) {
let changeDue = cash - price
let totalCid = 0
for (let i = 0; i < 8; i++) {
totalCid += cid[i][1]
}
if (changeDue > totalCid) {
changeDueEle.textContent = 'Status: INSUFFICIENT_FUNDS'
} else {
cashValues(changeDue, cid)
// console.log('Change due:', changeDue, 'CID:', totalCid)
}
}
}
purchaseBtn.addEventListener('click', () => { registerTests(price, Number(cashInput.value), cid) })
WARNING
The challenge seed code and/or your solution exceeded the maximum length we can port over from the challenge.
You will need to take an additional step here so the code you wrote presents in an easy to read format.
Please copy/paste all the editor code showing in the challenge from where you just linked.
Replace these two sentences with your copied code.
Please leave the ``` line above and the ``` line below,
because they allow your code to properly format in the post.
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Challenge Information:
Build a Cash Register Project - Build a Cash Register