最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Money denomination program for ATM in js that would be flexible to handle and dispense money in minimum notes - Sta

programmeradmin2浏览0评论

the code should be able to handle any amount up to 20000, For example, suppose the Entered amount is 2600 when the balance in the card is 3000. Will output following : New Balance - 400 Notes: 2000 * 1 500 * 1 100 * 1

(only three banknotes 2000, 500, 100) and the cash limit is 20000

I am new in the javascript world, and I am not able to write the code, could anyone help me out??? please!

var h = 5;
var f = 2;
var t = 1;


var ifAmtLessThn2000 = ifAmtLessThn2000(n) {
    var temp;
    if (n < 500) {
        h += (n / 100);
        return {
            h
        }
    } else if (n >= 500 && n < 2000) {
        f += n / 500;
        h += (n - 500) / 100;
        return {
            h,
            f
        }
    } else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
            return {
                h
            }
            console.log('hundred : ' + h);
        } else {
            f += 1;
            h += (temp - 500) / 100;
            console.log('five hundred : ' + f);
            console.log('hundred : ' + h);
            return {
                f,
                h
            }
        }
    }
}


var ifAmtGreaterthan2000 = (n) => {
    var h = 0;
    var f = 0;
    var t = 0;
    var tt = 0;
    var temp;

    if (n < 2000) {
        tt += (n / 2000);
    }
    else if (n >= 2000 && n < 10000) {
        f += n / 500;
        h += (n - 500) / 100;
    }
    else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
        }
        else {
            f += 1;
            h += (temp - 500) / 100;
        }
    }
}




var checkAmt = (n) => {
    if (n < 100 || (n % 100) > 0) {
        console.log("Invalid Amount : less than 100 ");
    } else {
        if (n > 20000) {
            console.log("ATM Cash Limit exceeds.");
        } else {
            if (n <= 2500) {
                ifAmtLessThn2500(n);
                console.log(h + " x 100");
                console.log(f + " x 500");
            } else {
                temp = n - 2500;
                t += temp / 1000;
                if (temp > 500)
                    temp = temp - (1000 * (t - 1));
                ifAmtLessThn2500(temp);
                console.log(h + " x 100");
                console.log(f + " x 500");
                console.log(t + " x 1000");
            }
        }
    }

}

checkAmt(2500);

Sorry for a dumb program, but I need help please can anyone give me a solution in typeScript code, returning the req denomination in array!!

the code should be able to handle any amount up to 20000, For example, suppose the Entered amount is 2600 when the balance in the card is 3000. Will output following : New Balance - 400 Notes: 2000 * 1 500 * 1 100 * 1

(only three banknotes 2000, 500, 100) and the cash limit is 20000

I am new in the javascript world, and I am not able to write the code, could anyone help me out??? please!

var h = 5;
var f = 2;
var t = 1;


var ifAmtLessThn2000 = ifAmtLessThn2000(n) {
    var temp;
    if (n < 500) {
        h += (n / 100);
        return {
            h
        }
    } else if (n >= 500 && n < 2000) {
        f += n / 500;
        h += (n - 500) / 100;
        return {
            h,
            f
        }
    } else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
            return {
                h
            }
            console.log('hundred : ' + h);
        } else {
            f += 1;
            h += (temp - 500) / 100;
            console.log('five hundred : ' + f);
            console.log('hundred : ' + h);
            return {
                f,
                h
            }
        }
    }
}


var ifAmtGreaterthan2000 = (n) => {
    var h = 0;
    var f = 0;
    var t = 0;
    var tt = 0;
    var temp;

    if (n < 2000) {
        tt += (n / 2000);
    }
    else if (n >= 2000 && n < 10000) {
        f += n / 500;
        h += (n - 500) / 100;
    }
    else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
        }
        else {
            f += 1;
            h += (temp - 500) / 100;
        }
    }
}




var checkAmt = (n) => {
    if (n < 100 || (n % 100) > 0) {
        console.log("Invalid Amount : less than 100 ");
    } else {
        if (n > 20000) {
            console.log("ATM Cash Limit exceeds.");
        } else {
            if (n <= 2500) {
                ifAmtLessThn2500(n);
                console.log(h + " x 100");
                console.log(f + " x 500");
            } else {
                temp = n - 2500;
                t += temp / 1000;
                if (temp > 500)
                    temp = temp - (1000 * (t - 1));
                ifAmtLessThn2500(temp);
                console.log(h + " x 100");
                console.log(f + " x 500");
                console.log(t + " x 1000");
            }
        }
    }

}

checkAmt(2500);

Sorry for a dumb program, but I need help please can anyone give me a solution in typeScript code, returning the req denomination in array!!

Share Improve this question edited May 14, 2018 at 9:31 Abhishek Gautam asked May 14, 2018 at 8:24 Abhishek GautamAbhishek Gautam 1,7673 gold badges21 silver badges31 bronze badges 4
  • 2 Please explain what's wrong with your program (input, current output, expected output) – user202729 Commented May 14, 2018 at 8:27
  • Actually, I am new to js, so googled for it, found one code in java, tried to convert it into js .. but nothing works!! – Abhishek Gautam Commented May 14, 2018 at 9:33
  • @user202729 any help?? – Abhishek Gautam Commented May 14, 2018 at 9:34
  • Not until you make your question better. What exactly doesn't work? If there are error messages, what are they? – user202729 Commented May 14, 2018 at 9:35
Add a ment  | 

7 Answers 7

Reset to default 4

const withdraw = (amount) => {
  let hundredNotes = 0;
  let fiftyNotes = 0;
  let twentyNotes = 0;

  while (amount >= 20) {
    if (
      amount >= 100 &&
      ((amount % 100) % 50 === 0 || (amount % 100) % 20 === 0)
    ) {
      amount -= 100;
      hundredNotes++;
    } else if (
      amount >= 50 &&
      ((amount % 50) % 100 === 0 || (amount % 50) % 20 === 0)
    ) {
      amount -= 50;
      fiftyNotes++;
    } else {
      amount -= 20;
      twentyNotes++;
    }
  }
  return [hundredNotes, fiftyNotes, twentyNotes];
};


console.log(withdraw(230));

console.log(withdraw(250));

amtArray = [2000, 500, 100];  // the denomination you want to find.

 for (let i = 0; i < this.amtArray.length; i++) {
            this.resultArray.push(Math.floor(total / this.amtArray[i]));
            // Get the new total
            total = total % this.amtArray[i];
        }
        var twothousands_notes = this.resultArray[0];
        var fivehundred_notes = this.resultArray[1];
        var hundred_notes = this.resultArray[2];

        console.log('calculated amt : ' + '100 : ' +
            hundred_notes + '   500 :  ' +
            fivehundred_notes + '  2000 :  ' +
            twothousands_notes);

Based on the amount you can adjust the logic.

Hope this helps.. :)

this would cover all your cases

function dispenseCase (inputAmount) {
 var notes = [];
 var balance = 3000;

  if(inputAmount !== 0 && inputAmount % 100 == 0 && inputAmount <= balance) {
    var notes2000 = Math.round(inputAmount / 2000);
    var notes500 = Math.round((inputAmount - (notes2000 * 2000)) / 500 );
    var notes100 = Math.round((inputAmount - ((notes2000 * 2000) + (notes500 * 500))) / 100);

   notes.push(notes2000);
   notes.push(notes500);
   notes.push(notes100);

   console.log("balance in you account = ", balance - inputAmount);
   console.log(notes);
  }
  else if (inputAmount > balance) {
   console.log("Insufficient balance in your account");
  }
  else if ( inputAmount % 100 != 0 || inputAmount < 100 ) {
   console.log( "Invalid amount entered, amount should be multiples of 100");
}
}

dispenseCase(2600);

ATM denomination program in Javascript.

Here, It'll find the minimum number of notes of different denominations that sum the entered amount. Starting from the highest denomination note to the lowest notes.

function countCurrency(amount) {
  var notes = [2000, 500, 200, 100];
  var noteCounter = [0, 0, 0, 0];

  for (var i = 0; i < 4; i++) {
    if (amount >= notes[i]) {
      noteCounter[i] = Math.floor(amount / notes[i]);
      amount = amount - noteCounter[i] * notes[i];
    }
  }
  // Print notes denomination
  console.log("Denomination Count:");
  for (var j = 0; j < 4; j++) {
    if (noteCounter[j] !== 0) {
      console.log(notes[j] + " : " + noteCounter[j]);
    }
  }
}

countCurrency(3300);

Here is the working example https://codesandbox.io/s/atm-denomination-javascript-o0wb4?file=/src/index.js

this would print the number of notes in a 2000, 500, 100 order for the amount you enter

function dispenseCase (inputAmount) {
 var notes = [];

  if(inputAmount !== 0) {
    var notes2000 = Math.round(inputAmount / 2000);
    var notes500 = Math.round((inputAmount - (notes2000 * 2000)) / 500 );
    var notes100 = Math.round((inputAmount - ((notes2000 * 2000) + (notes500 * 500))) / 100);

   notes.push(notes2000);
   notes.push(notes500);
   notes.push(notes100);

   console.log(notes);
  }
}

dispenseCase(2600);

hope this helps

//ATM Cash Denominations //Cash Input Value Already been Provided in this method // You may use a input stream method to input a user input value

public class Denominations
{
 public static void main(String args[])//throws IOException
 {

 int notes[]={5000,2000,1000,500,100}; //storing all the denominations in an array
 int amount = 27000;

 int copy=amount; //Making a copy of the amount
 int totalNotes=0,count=0;

 System.out.println("\nATM CASH DENOMINATIONS: \n");

 for(int i=0;i<5;i++) //Since there are 5 different types of notes, hence we check for each note.
 {
 count=amount/notes[i]; // counting number of notes[i] notes
 if(count!=0) //printing that denomination if the count is not zero
 {
 System.out.println(notes[i]+"\tx\t"+count+"\t= "+notes[i]*count);
 }
 totalNotes=totalNotes+count; //finding the total number of notes
 amount=amount%notes[i]; //finding the remaining amount whose denomination is to be found
 }

 System.out.println("--------------------------------");
 System.out.println("TOTAL\t\t\t= "+copy); //printing the total amount
 System.out.println("--------------------------------");
 System.out.println("Total Number of Notes\t= "+totalNotes); //printing the total number of notes
 }
} 

let sumToDenominate=Math.floor(Math.random() * 100);
let billsValues = [100, 50, 20, 10, 5,1];

let restAfterDenomination = [];
let billsNumber = [];



function denomination(sum, billsValues) {



printInitialValue( sumToDenominate, billsValues);

initializeArray( sumToDenominate, billsValues);


for (let i = 1; i <= billsValues.length; i++) {

    if (restAfterDenomination[i - 1] > 0 || restAfterDenomination < billsNumber[i]) {

        billsNumber.push(Math.floor(restAfterDenomination[i - 1] / billsValues[i]));

        console.log(`bill's number of `, billsValues[i], "=>", billsNumber[i]);

        restAfterDenomination.push(restAfterDenomination[i - 1] - (billsNumber[i] * billsValues[i]));


    } else {
        console.log(`rest is less than smallest bill or equal to 0`);
        billsNumber.push(0);
        // break;
    }
}



}

function printInitialValue(amount, billsValue) {
console.log("Denomination sumToDenominate: ", amount);

console.log("____________");
for (const logEntry of billsValue) {
    console.log(logEntry);
}
console.log("__________");
}

function initializeArray(amount, billsValues) {


billsNumber.push(Math.floor(amount / billsValues[0]));

console.log(`bill's number of`, billsValues[0], "=>", billsNumber[0]);

restAfterDenomination.push(amount - (billsNumber[0] * billsValues[0]));


denomination(sumToDenominate,billsValues);

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论