C Money Counter Program

I generated a code that calculates the minimum amount of 20, 10, 5, 2 and 1, which will add up to a user-defined amount of money. The user is allowed to enter integers, i.e. No decimal values. I have two questions.

  • If denomination is not required, the program displays a random number instead of 0. How can I fix this?
  • Is it possible to create a function that could replace all if statements and, possibly, printf statements? I am new to functions, so I lost them a bit.

 #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", &pounds); 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; } 
+4
source share
3 answers

This is a great example of why you should initialize your variables when declaring them.

If pounds<20 , then twenty will never be initialized. In C, variables have a (mostly) 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; 
+5
source

To output 0, simply initialize all your variables to 0, otherwise they will be assigned the value "garbage":

 int one = 0, two = 0, five = 0, ten = 0, twenty = 0; 
+2
source

It is always good practice to initialize all your variables to 0 when they are declared. This way you will not get a random value if there are no denominations. You can declare and initiate your variables at the same time by following these steps:

 int a = 0; 

or if there are a lot of them:

 int a = 0, b = 0, c = 0; 

If you do not initialize your variables before using them, the data that they store in them will be random things that were in your drum before you executed your program. This is why you get random numbers as answers.

+2
source

Source: https://habr.com/ru/post/1389542/


All Articles