JavaScript Algorithms and Data Structures Projects - Cash Register

Tell us what’s happening:
Describe your issue in detail here.
I’ve been stuck on this for 2 days …never made a help post before but i am getting hopeless on this one …plz help
Your code so far

function checkCashRegister(price, cash, cid) {
    let newCid =[
      ["PENNY", 0.01],
      ["NICKEL", 0.05],
      ["DIME", 0.1],
      ["QUARTER", 0.25],
      ["ONE", 1],
      ["FIVE", 5],
      ["TEN", 10],
      ["TWENTY", 20],
      ["ONE HUNDRED", 100]
    ]
    let changeReturn = (cash - price)
    let change = []
    
    ////////////// INSUFFICIENT_FUNDS SCENARIO
    
    let sumOfAll = 0
    for(let elem of cid){
      sumOfAll += elem[1]
    }
    
    if(sumOfAll < changeReturn){
      return {status:"INSUFFICIENT_FUNDS", 'change': []}
    }
  
    ////////////////////////////////////////////
    
  
    let a = cid.length - 1
    while (a >= 0){
    let add = 0
      while(changeReturn >= newCid[a][1] && cid[a][1] !== 0){
        cid[a][1] -= newCid[a][1]
        changeReturn -= newCid[a][1] 
        add += newCid[a][1]
  
      }
        if(!change.includes(newCid[a][0])){
          change.push([newCid[a][0],add])
        }
      a--
    }
    
    if(change[change.length - 1][0] === newCid[0][0] &&
    change[change.length -1][1] !== 0){
        change[change.length -1][1] += newCid[0][1]
        if(cid[0][0] < 0.01){
            cid[0][0] = 0
        }
    }

    ////////////// CLOSED SCENARIO
    
    let sum = 0
    for(let elem of cid){
      sum += elem[1]
    }

    if(sum < 0){
    return {status:"CLOSED", 'change': change}
    }

    //////////////

    change = change.filter(elem => elem[1] !== 0)
    return {status:"OPEN", 'change': change}
    }
  
      console.log(
      //  checkCashRegister(19.5, 20, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 1], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]),
    checkCashRegister(19.5, 20, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 1], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]])
        )
      

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0

Challenge: JavaScript Algorithms and Data Structures Projects - Cash Register

Link to the challenge:

Welcome to the forum. Dont be afraid to ask for help. Can you describe what exactly the problem you got?

Return {status: "INSUFFICIENT_FUNDS", change: []} if cash-in-drawer is less than the change due, or if you cannot return the exact change.

Are you checking for the exact change?


Last test:

{ status: 'OPEN', change: [ [ 'PENNY', 0.5000000000000002 ] ] }

If this was a physical cash exchange, how would you return this?

i tried using .toFixed but was unable to change its output to 0.5

Post the code otherwise we can’t help.

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