Tell us what’s happening:
My code is running well, but not passing all the test cases at the SAME TIME.
What I meant by same time is that, if I updated the price and cid to the specific test case,
then that particular test case is working, and the remaining tests are being failed.
Someone please look into this and help me.
Thanks in advance!
Your code so far
<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initalscale=0">
<title>Palindrome Checker</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<input id="cash"/>
<div id="change-due"></div>
<button id="purchase-btn">Purchase</button>
<script src="./script.js"></script>
</body>
</html>
/* file: styles.css */
/* file: script.js */
let price = 3.26;
let cid =[["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]];
//finding total cash in drawer and rounding off to 2 decimals
let totalcid=0;
for(let i=0; i<cid.length;i++){
totalcid+=cid[i][1];
}
totalcid=Math.round(totalcid*100)/100;
console.log(totalcid);
const denomination = [
["ONE HUNDRED", 100],
["TWENTY", 20],
["TEN", 10],
["FIVE", 5],
["ONE", 1],
["QUARTER", 0.25],
["DIME", 0.1],
["NICKEL", 0.05],
["PENNY", 0.01]
]
const arrLength = denomination.length;
const returningChangeArr =[];
const returningChangeAmountArr = [];
const inputCash = document.getElementById('cash');
const changeDue = document.getElementById('change-due');
const purchaseBtn = document.getElementById('purchase-btn');
purchaseBtn.addEventListener('click',()=>{
const cash = Number(inputCash.value);
calChange(cash);
})
const calChange = (givenMoney) => {
//check if we can initiate transaction.
let changeMoney = Math.round((givenMoney-price)*100)/100;//calulate the amount of money to be returned
if(givenMoney<price){
return alert("Customer does not have enough money to purchase the item");
}
else if(changeMoney>totalcid){
return changeDue.textContent="Status: INSUFFICIENT_FUNDS";
}
else if(givenMoney === price){
return changeDue.textContent="No change due - customer paid with exact cash";
}else if(changeMoney === totalcid){
changeDue.textContent=`Status: CLOSED ${cid} \r\n`
for(let i=0;i<arrLength;i++){
let noOfNotes = 0;
while(changeMoney >= denomination[i][1] && cid[arrLength-i-1][1]>0){
changeMoney = Math.round((changeMoney-denomination[i][1])*100)/100;
cid[arrLength-i-1][1] = Math.round((cid[arrLength-i-1][1]-denomination[i][1])*100)/100;
noOfNotes++;
}
returningChangeArr[i] = noOfNotes;
returningChangeAmountArr[i] = [denomination[i][0], (returningChangeArr[i]*denomination[i][1])];
if(returningChangeArr[i] > 0){
changeDue.textContent += `${denomination[i][0]}: $${returningChangeAmountArr[i][1]} \r\n`;
}
}
}
else{
changeDue.textContent="Status: OPEN \r\n";
for(let i=0;i<arrLength;i++){
let noOfNotes = 0;
while(changeMoney >= denomination[i][1] && cid[arrLength-i-1][1]>0){
console.log("changeMoneyBefore: ",changeMoney,"denomination: ",denomination[i][0], "cid before: ",cid[arrLength-i-1][1]);
changeMoney = Math.round((changeMoney-denomination[i][1])*100)/100;
cid[arrLength-i-1][1] = Math.round((cid[arrLength-i-1][1]-denomination[i][1])*100)/100;
noOfNotes++;
console.log("changeMoneyAfter: ",changeMoney, "denomination: ",denomination[i][0], "cid after: ",cid[arrLength-i-1][1]);
}
returningChangeArr[i] = noOfNotes;
returningChangeAmountArr[i] = [denomination[i][0], (returningChangeArr[i]*denomination[i][1])];
if(returningChangeArr[i] > 0){
changeDue.textContent += `${denomination[i][0]}: $${returningChangeAmountArr[i][1]} \r\n`;
}
}
}
for(let i=0;i<cid.length;i++){
cid[i]=cid[i].join(": ");
}
cid = cid.join(" ");
}
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