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.
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.
- Input amount from user. Store it in some variable say amt.
- 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)
. - 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 😉
Recommended posts
- If else programming exercises index.
- C program to check a triangle is valid or not it its sides are given.
- C program to check whether a triangle is valid or not if its angles are given.
- C program to check Equilateral, Scalene or Isosceles triangle.
- C program to find all roots of a quadratic equation.
- C program to find profit or loss.