Reputation: 2689
I have generated code that counts the minimum number of 20's, 10's, 5's, 2's and 1's that will add up to a user defined amount of money. The user is only allowed to enter whole numbers i.e. no decimal values. I have two questions.
printf
statements? I'm new to functions so am a little bit lost with them.#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
int pounds;
int one, two, five, ten, twenty;
printf("Enter a pounds amount with no decimals, max E999999: \n");
scanf("%d", £s);
printf("%d\n", pounds);
if(pounds >= 20)
{
twenty = (pounds / 20);
pounds = (pounds-(twenty * 20));
printf("%d\n", pounds);
}
if(pounds >= 10)
{
ten = (pounds / 10);
pounds = (pounds-(ten * 10));
printf("%d\n", pounds);
}
if(pounds >= 5)
{
five = (pounds / 5);
pounds = (pounds-(five * 5));
printf("%d\n", pounds);
}
if(pounds >= 2)
{
two = (pounds / 2);
pounds = (pounds-(two * 2));
printf("%d\n", pounds);
}
if(pounds >= 1)
{
one = (pounds / 1);
pounds = (pounds-(one * 1));
printf("%d\n", pounds);
}
printf("The smallest amount of denominations you need are: \n");
printf("20 x %d\n", twenty);
printf("10 x %d\n", ten);
printf("5 x %d\n", five);
printf("2 x %d\n", two);
printf("1 x %d\n", one);
return 0;
}
Upvotes: 5
Views: 3093
Reputation: 686
It is always a good practice to initialize all your variables to 0 when you declare them. This way you wont get a random value if there are no denominations to be made. You can declare and initiate your variables at the same time by doing this :
int a = 0;
or if they are many:
int a = 0, b = 0, c = 0;
If you don't initialize your variables before you use them the data they have stored in them will be random things that were in your ram before you executed your program. This is why you get random numbers as answers.
Upvotes: 2
Reputation: 33211
This is a great example of why you should initialize your variables when you declare them.
If pounds<20
, then twenty
will never get initialized. In C, variables have a (basically) random value assigned to them until you replace it with something else.
You just need to do this:
int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
Upvotes: 6
Reputation: 62459
To output 0 just initialize all your variables to 0, otherwise they will be assigned "junk" values:
int one = 0, two = 0, five = 0, ten = 0, twenty = 0;
Upvotes: 2