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 😉