After trying for so long to solve Exact Change problem, I am stuck with this test
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0.50], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
Can someone please tell me what I am not doing right?
Thanks
the full solution is below:
function checkCashRegister(price, cash, cid) {
var change = cash - price;
var totalcid = totalCid(cid);
// console.log(change);
var output = [];
if(totalcid < change){
return "Insufficient Funds";
}
if(change === totalcid){
return "Closed";
}
for(var i = cid.length - 1; i >= 0; i--){
var currencyUnit = interpretCurrency(cid[i][0]);
// var remainder = change;
var buffer = cid[i];
// console.log(buffer);
// console.log("change " +change);
// console.log("currencyUnit " +currencyUnit);
if(currencyUnit <= change){
// console.log("change " +change);
// console.log("currencyUnit " +currencyUnit);
var returnUnits = 0;
while((change / currencyUnit >= 1) && (cid[i][1] > 0)){
change -= currencyUnit;
change = change.toFixed(2);
cid[i][1] -= currencyUnit;
returnUnits++;
}
buffer[1] = returnUnits * currencyUnit;
output.push(buffer);
}
}
return output;
}
checkCashRegister(19.50, 20.00, [["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0.50], ["ONE", 1.00], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]);
function totalCid(arr){
var total = 0;
for(var i = 0; i < arr.length; i++){
total += arr[i][1];
}
return total;
}
function interpretCurrency(str){
var result = 0;
switch(str) {
case "PENNY":
result = 0.01;
break;
case "NICKEL":
result = 0.05;
break;
case "DIME":
result = 0.10;
break;
case "QUARTER":
result = 0.25;
break;
case "ONE":
result = 1;
break;
case "FIVE":
result = 5;
break;
case "TEN":
result = 10;
break;
case "TWENTY":
result = 20;
break;
case "ONE HUNDRED":
result = 100;
break;
default:
result = 0;
}
return result;
}