I think this was already due, so hopefully this isn't ruining it, but i think something like this might be better:
No worrying with estimation of a float or double, etc.
-Lee
Code:
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[]) {
int dollars_paid, cents_paid,dollars_due,cents_due,change,dollar_bills=0,quarters=0,dimes=0,nickels=0,owe;
printf("Welcome.\nEnter the amounts due and paid:\nDue: $");
scanf("%d.%d",&dollars_due,¢s_due);
printf("Paid: $");
scanf("%d.%d",&dollars_paid,¢s_paid);
cents_paid+=dollars_paid*100;
cents_due+=dollars_due*100;
owe = cents_due > cents_paid;
change = abs(cents_paid - cents_due);
if(change == 0) {
printf("Exact change! Thanks!\n");
return 0;
}
dollar_bills = change / 100;
change%=100;
quarters = change / 25;
change%=25;
dimes = change / 10;
change%=10;
nickels = nickels / 5;
change%=5;
if(owe) {
printf("You still owe ");
} else {
printf("Your change is ");
}
if(dollar_bills) printf("%d dollar bill(s) ",dollar_bills);
if(quarters) printf("%d quarter(s) ",quarters);
if(dimes) printf("%d dime(s) ",dimes);
if(nickels) printf("%d nickel(s) ",nickels);
if(change) printf("%d penn(y|ies)",change);
printf("\n");
return 0;
}
No worrying with estimation of a float or double, etc.
-Lee