Simple Program For Converting Change to Dollars

This is a discussion on Simple Program For Converting Change to Dollars within the C Programming forums, part of the General Programming Boards category; All right, I was given an assignment to take the number of pennies, nickels, dimes, quarters, and half dollars from ...

1. Simple Program For Converting Change to Dollars

All right, I was given an assignment to take the number of pennies, nickels, dimes, quarters, and half dollars from the user and then make a program to count the number of coins, how many cents it adds up to (i.e. 450 cents), and then convert it to dollars and cents (i.e. 4 dollars and 50 cents). I have the coins part working, and now I'm trying to get it to add up to the cents and it just isn't working... Here's what I have so far:

Code:
``` #include <stdio.h>
#include <stdlib.h>
#define pennies_per_dollar 1
#define nickels_per_dollar 5
#define dimes_per_dollar 10
#define quarters_per_dollar 25
#define halfdollars_per_dollar 50

main()

{
int pennies, nickels, dimes, quarters, halfdollars, total_coins, total_cents;
int pennies2, nickels2, dimes2, quarters2, halfdollars2;

printf("How many pennies do you have? ");
scanf("%d", &pennies);

printf("How many nickels do you have? ");
scanf("%d", &nickels);

printf("How many dimes do you have? ");
scanf("%d", &dimes);

printf("How many quarters do you have? ");
scanf("%d", &quarters);

printf("How many half dollars do you have? ");
scanf("%d", &halfdollars);

total_coins = pennies + nickels + dimes + quarters + halfdollars;

pennies2 = pennies * pennies_per_dollar / 100;
nickels2 = nickels * nickels_per_dollar / 100;
dimes2 = dimes * dimes_per_dollar / 100;
quarters2 = quarters * quarters_per_dollar / 100;
halfdollars2 = halfdollars * halfdollars_per_dollar / 100;

total_cents = pennies2 + nickels2 + dimes2 + quarters2 + halfdollars2;

printf("\n");
printf("Your total number of coins is: %d\n", total_coins);

printf("You have %d cents.", total_cents);

system("PAUSE");

}```

2. The logic is askew -

pennies per dollar is *one*?? try 100
half dollar per dollar is 50?? try 2.

etc.

It's easiest if you just convert everything to pennies, and add things up from there.

There's no need at all for pennies2, nickels2, etc. Best to just lose them. We're not building piano's here.

3. Haha, I will take it out, I have just been getting desperate and adding and adding more things that really shouldn't be there I believe. I appreciate it, I will let you know what it spits out.

4. Hrm, the program is still only spitting out 1-3 cents everytime it runs, and this is what I have changed, I'm not sure what's wrong still..

Code:
``` #include <stdio.h>
#include <stdlib.h>
#define pennies_per_dollar 100
#define nickels_per_dollar 20
#define dimes_per_dollar 10
#define quarters_per_dollar 4
#define halfdollars_per_dollar 2

main()

{
int pennies, nickels, dimes, quarters, halfdollars, total_coins, total_cents;

printf("How many pennies do you have? ");
scanf("%d", &pennies);

printf("How many nickels do you have? ");
scanf("%d", &nickels);

printf("How many dimes do you have? ");
scanf("%d", &dimes);

printf("How many quarters do you have? ");
scanf("%d", &quarters);

printf("How many half dollars do you have? ");
scanf("%d", &halfdollars);

total_coins = pennies + nickels + dimes + quarters + halfdollars;

total_cents = (pennies / pennies_per_dollar) + (nickels / nickels_per_dollar) + (dimes / dimes_per_dollar) + (quarters / quarters_per_dollar) + (halfdollars / halfdollars_per_dollar);

printf("\n");
printf("Your total number of coins is: %d\n", total_coins);

printf("You have %d cents.", total_cents);

system("PAUSE");

}```

5. total_cents = (pennies / pennies_per_dollar) + (nickels / nickels_per_dollar) + (dimes / dimes_per_dollar) + (quarters / quarters_per_dollar) + (halfdollars / halfdollars_per_dollar);
Wrong way around. To find the total cents you want to multiply not divide.

For example given a dollar is 100 cents and I have 2 dollars, that's 100 x 2 cents not 2 / 100 cents is it?

6. I had just noticed that after I posted it, I actually am getting somewhere now, but whatever I put in I only get out 1236 cents? So I've switched it to multiplication but it is still just a tad awry...so frustrating.

7. Code:
`total_cents = ((pennies * pennies_per_dollar) / 100) + ((nickels * nickels_per_dollar) / 100) + ((dimes * dimes_per_dollar) / 100) + ((quarters * quarters_per_dollar) / 100) + ((halfdollars * halfdollars_per_dollar) / 100);`
This is my new line for total_cents and it's still crap not working..

8. Why should it? It's not as though it makes any sense. Say I have five nickels. nickels_per_dollar is defined as 20. So (5*20)/100 = 1 -- meaning five nickels is worth one cent.

Think about what you're doing for seven seconds, and then write down code.

9. Haha, thanks for the e-slap in the face tabstop, I thought about it for seven seconds. I redefined my defines to what each thing literally equals and now this is my new line and it works...

Code:
`total_cents = (pennies) + (nickels * nickel) + (dimes * dime) + (quarters * quarter) + (halfdollars * halfdollar);`

10. Originally Posted by Will.I.Am
I had just noticed that after I posted it, I actually am getting somewhere now, but whatever I put in I only get out 1236 cents? So I've switched it to multiplication but it is still just a tad awry...so frustrating.
Will, you have been at it so much, you can't see the forest for the tree's.

"It's not that you're wrong, it's not that I'd knock it, it's just that I, am not in the market..."

Sorry, a song from 20 years ago, comes to mind.

total cost = pennies + (nickels * 5) + (dimes * 10) + (quarters * 25) + (half dollars * 50)

Remember, you're changing everything to pennies, *first*.

Now
dollars = total cost / 100; (fractional parts are truncated)
total change = total cost - (dollars * 100) [you can also do this with mod operator]

Now a while loop will polish off the coins:

Code:
```while(total change > 4)  {
if(total change >= 50)  {
half dollars++;
total change -= 50;
}

if(total change >= 25)  {
quarters++;
total change -= 25;
}

//etc. down to nickels. Pennies equals the remaining total change.

}```
Make sense to you?

11. Adak, that makes perfect sense now.. I really do not know what I was thinking I started this, but this is my source code and it works great, enjoy it.

Code:
```#include <stdio.h>
#include <stdlib.h>

#define nickel 5
#define dime 10
#define quarter 25
#define halfdollar 50

main()

{
int pennies, nickels, dimes, quarters, halfdollars, total_coins, total_cents, total_dollars, total_remainder;

printf("How many pennies do you have? ");
scanf("%d", &pennies);

printf("How many nickels do you have? ");
scanf("%d", &nickels);

printf("How many dimes do you have? ");
scanf("%d", &dimes);

printf("How many quarters do you have? ");
scanf("%d", &quarters);

printf("How many half dollars do you have? ");
scanf("%d", &halfdollars);

total_coins = pennies + nickels + dimes + quarters + halfdollars;

total_cents = (pennies) + (nickels * nickel) + (dimes * dime) + (quarters * quarter) + (halfdollars * halfdollar);

total_dollars = (total_cents / 100);

total_remainder = (total_cents % 100);

printf("\n");
printf("Your total number of coins is: %d\n", total_coins);
printf("You have %d cents.\n", total_cents);
printf("You have %d dollars and", total_dollars);
printf(" %d cents.\n\n", total_remainder);

system("PAUSE");

}```

12. You have a "total remainder" in pennies, but you didn't convert it back to normal "change":

half dollars, if more than 49 cents remain in total remainder. Subtract 50 cents for every 1 half dollar.
and
quarters if more than 24 cents remains after half dollars are subtracted from total remainder.
and
dimes if more than 9 cents remains after quarters are subtracted from total remainder, etc.

Better look at my while loop, again.

13. Ah, I understand now, but we haven't started while statements in class and such or even half the commands you used in your statement. But when I run mine it gives me back what I need and as much as the book is asking for. I definitely thank you for all of your help, and now I know who to look for whenever I get baffled over the next program. Looking back I actually do feel somewhat like wtf after reading what I originally posted, I am just glad everything works now.