C program to count total number of notes in given amount

Write a C program to input amount from user and print minimum number of notes (Rs. 500, 100, 50, 20, 10, 5, 2, 1) required for the amount. How to the minimum number of notes required for the given amount in C programming. Program to find minimum number of notes required for the given denomination. Logic to find minimum number of denomination for a given amount in C program.

Example
Input

Input amount: 575

Output

Total number of notes: 
500: 1
100: 0
50: 1
20: 1
10: 0
5: 1
2: 0
1: 0

Required knowledge

Basic C programming, Relational operators, If else

Logic to count minimum number of denomination for given amount

There any many optimal algorithms to solve the given problem. For this exercise to make things simple I have used greedy algorithm.

Step by step descriptive logic to find minimum number of denomination.

  1. Input amount from user. Store it in some variable say amt.
  2. If amount is greater than 500 then, divide amount by 500 to get maximum 500 notes required. Store the division result in some variable say note500 = amt / 500;.

    After division, subtract the resultant amount of 500 notes from original amount. Perform amt = amt - (note500 * 500).

  3. Repeat above step, for each note 200, 100, 50, 20, 10, 5, 2 and 1.

Program to count minimum number of denomination for given amount

/**
 * C program to count minimum number of notes in an amount
 */
 
#include <stdio.h>

int main()
{
    int amount;
    int note500, note100, note50, note20, note10, note5, note2, note1;
    
    /* Initialize all notes to 0 */
    note500 = note100 = note50 = note20 = note10 = note5 = note2 = note1 = 0;


    /* Input amount from user */
    printf("Enter amount: ");
    scanf("%d", &amount);


    if(amount >= 500)
    {
        note500 = amount/500;
        amount -= note500 * 500;
    }
    if(amount >= 100)
    {
        note100 = amount/100;
        amount -= note100 * 100;
    }
    if(amount >= 50)
    {
        note50 = amount/50;
        amount -= note50 * 50;
    }
    if(amount >= 20)
    {
        note20 = amount/20;
        amount -= note20 * 20;
    }
    if(amount >= 10)
    {
        note10 = amount/10;
        amount -= note10 * 10;
    }
    if(amount >= 5)
    {
        note5 = amount/5;
        amount -= note5 * 5;
    }
    if(amount >= 2)
    {
        note2 = amount /2;
        amount -= note2 * 2;
    }
    if(amount >= 1)
    {
        note1 = amount;
    }

    /* Print required notes */
    printf("Total number of notes = \n");
    printf("500 = %d\n", note500);
    printf("100 = %d\n", note100);
    printf("50 = %d\n", note50);
    printf("20 = %d\n", note20);
    printf("10 = %d\n", note10);
    printf("5 = %d\n", note5);
    printf("2 = %d\n", note2);
    printf("1 = %d\n", note1);

    return 0;
}

In above program, I have used shorthand assignment operator. The statement amount -= note500 * 500; is equivalent to amount = amount - (note500 * 500);.

Output

Enter amount: 4673
Total number of notes = 
500 = 9 
100 = 1 
50 = 1 
20 = 1 
10 = 0 
5 = 0 
2 = 1 
1 = 1

Happy coding 😉

About Pankaj

Pankaj Prakash is the founder, editor and blogger at Codeforwin. He loves to learn new techs and write programming articles especially for beginners. He works at Vasudhaika Software Sols as a Software Design Engineer and manages Codeforwin. In short Pankaj is Web developer, Blogger, Learner, Tech and Music lover.

Follow on: Facebook | Twitter | Google | or

Comments and discussion
Have a doubt, write here. I will help my best.
Before commenting you must escape your source code before commenting. Paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>