Hi,
I have an assignment to create a change counter program. Once I have written the code, and tested it, I must enter in the GDP and money the US spends on gas to see how much is left over.
The thing is the program goes a little wacky in the higher digit numbers. I'm just wondering exactly why. So...why?
Thanks
Here's the code.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define VALUE_OF_TWENTY 2000
#define VALUE_OF_TENS 1000
#define VALUE_OF_FIVES 500
#define VALUE_OF_ONES 100
#define VALUE_OF_QUARTER 25
#define VALUE_OF_DIMES 10
#define VALUE_OF_NICKLES 5
#define VALUE_OF_PENNIES 1
#define REMAINDER_VALUE .5
int main(void)
{
long double amountOfPurchase = 0.0;
long double amountTendered = 0.0;
long double changeInDollars = 0.0;
unsigned int changeInCents = 0.0;
printf("Cash Register\n\n");
printf("Please enter the total amount of purchase: $");
scanf("%lf", &amountOfPurchase);
printf("Please enter amount of money tendered: $");
scanf("\n\n%lf", &amountTendered);
if(amountTendered < amountOfPurchase)
{
changeInDollars = amountTendered - amountOfPurchase;
printf("You still owe money. $%.2lf\n\n", changeInDollars);
}
if(amountTendered > amountOfPurchase);
{
changeInDollars = amountTendered - amountOfPurchase;
printf("\nYour change is $%.2lf\n\n", changeInDollars);
}
changeInCents = (int)( floor(changeInDollars * 100 + REMAINDER_VALUE)) ;
//Twenties
printf("Twenties: %d\n", changeInCents / VALUE_OF_TWENTY);
changeInCents %= 2000;
//Tens
printf("Tens: %d\n", changeInCents / VALUE_OF_TENS);
changeInCents %= 1000;
//Fives
printf("Fives: %d\n", changeInCents / VALUE_OF_FIVES);
changeInCents %= 500;
//Ones
printf("Ones: %d\n", changeInCents / VALUE_OF_ONES);
changeInCents %= 100;
//Quarters
printf("Quarters: %d\n", changeInCents / VALUE_OF_QUARTER);
changeInCents %= 25;
//Dimes
printf("Dimes: %d\n", changeInCents / VALUE_OF_DIMES);
changeInCents %= 10;
//Nickles
printf("Nickles: %d\n", changeInCents / VALUE_OF_NICKLES );
changeInCents %= 5;
//Pennies
printf ("Pennies: %d\n", changeInCents);
getchar();
getchar();
return EXIT_SUCCESS;
}