Cash Register Troubles

Tell us what’s happening:
Im going through the last test i need to satisfy to pass the project.

checkCashRegister(19.5, 20, [[“PENNY”, 0.5], [“NICKEL”, 0], [“DIME”, 0], [“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0], [“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]]) should return {status: “CLOSED”, change: [[“PENNY”, 0.5], [“NICKEL”, 0], [“DIME”, 0], [“QUARTER”, 0], [“ONE”, 0], [“FIVE”, 0], [“TEN”, 0], [“TWENTY”, 0], [“ONE HUNDRED”, 0]]}

It seems to be getting tripped up at the ten cent(where there is no change to give) instead of looping the the pennies(where there is change to give) to distribute to the change object.

Any help would be greatly appreciated, thanks. =)

  **Your code so far**

function checkCashRegister(price, cash, cid) {
// create change object
let change = {
status: "OPEN",
change: []
};
// let change due = cash -price
let changeDue = cash-price;

// Currency values
let priceChart = [0.01, 0.05, 0.1, 0.25, 1, 5, 10, 20, 100];

// loop through cid array
for (let x = (priceChart.length - 1); x >= 0; x--){
// loop while changeDue is > the value of the current change denomination
while(changeDue >= priceChart[x]){
  /*
      **** closed status of money return 
  */

  // conditional if coin has supply
  if(cid[x][1] === 0){
    x--;
  }
  
  // if the current coin has already been added to change.change
  if (currentCoin === cid[x][0]){
    // add change on to current coin
    change.change[0][1] = change.change[0][1] + priceChart[x];
    // reduce amount of bill/coin change from supply
    cid[x][1] = cid[x][1] - priceChart[x];
  } else {
    // add a new array entity for next currency unit
    change.change.unshift([cid[x][0], priceChart[x]]);
    // reduce amount of bill/coin change from supply
    cid[x][1] = cid[x][1] - priceChart[x];
    
  }

  // readjust changeDue after current coin has been subtracted
  // changeDue = changeDue - priceChart[x]; *****
  changeDue = Math.round((changeDue - priceChart[x])*100)/100;
  console.log(changeDue);

  // return insufficient funds if their is not enough change
  if (cid[x][1] < 0) {
    change.status = "INSUFFICIENT_FUNDS";
    change.change = [];

    return change;
  }
  console.log(change.change + " " + cid[x][1] + " " + changeDue);
  // current coin tracker
  let currentCoin = cid[x][0];
}

} 

// reverse order change.change
change.change = change.change.reverse();

// return change
console.log(change);
return change; 
}

checkCashRegister(19.5, 20, [["PENNY", 0.5], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])

  **Your browser information:**

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

Challenge: Cash Register

Link to the challenge:

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.