Простая кассовая программа на C - PullRequest
0 голосов
/ 26 января 2019

Программа запрашивает ввод цены, затем добавляет к ней gst (13%).Затем он должен вывести требуемое количество различных монет, которые нужно заплатить (сумасшедшие = 1 доллар, кварталы = 0,25, десять центов = 0,1, никели = 0,05, копейки = 0,01).

На самом деле, мне почти удалось сделатьвсе сам, однако последняя часть, где он должен выводить количество копеек, не работает для меня должным образом.

Например: когда я ввожу 8.32, это то, что я получаю


Пожалуйста, введите сумму к оплате: $ 8,32

GST: 1,09

Остаток: 9,41

Требуется сумасшедших: 9, остаток на счете 0,41

Требуется кварталов: 1, остаток на счету 0,16

Требуемые 10 центов: 1, остаток на сумму 0,06

Требуется никелей: 1, остаток на сумму 0,01

Требуемые пенни: 0, остаток на сумму 0,01


Очевидно, что во второй последней строке указано, что остаток составляет 0,01, однако программа сообщает, что требуется 0 копеек.

Я думаю, что проблема в типах, но они не настолько понятныя еще.

Код

                                                                            // Presenting needed variables for this task
double amount;                                                          // We ask a customer to input the amount
int loonies, quarters, dimes, nickels, pennies;                                                         // Loonies and quarters represent single number of coins, therefore they are integer values
float owing, gst;

printf("Please enter the amount to be paid: $");                                // Asking to enter the input
scanf("%lf", &amount);

gst = amount * .13 + .005;
printf("GST: %.2f\n", gst);

owing = amount + gst;
printf("Balance owing: %.2f\n", owing);

loonies = owing;                                                                // By assigning loonies to amount, we calculate the integer amount of loonies we can fit into the amount number
owing = owing - loonies;                                                    // Calculating the owing amount left to pay


printf("Loonies required: %d, balance owing $%.2f\n", loonies, owing);          // Showing the amount of required loonies and the rest of owing balance

quarters = owing / 0.25;                                                        // Calculating amount of quarters to pay
owing = owing - quarters * 0.25;                                                    // Calculating the rest of the amount left to pay

printf("Quarters required: %d, balance owing $%.2f\n", quarters, owing);        // Showing the amount of required quarters and the rest of owing balance

dimes = owing / 0.1;
owing = owing - dimes * 0.1;

printf("Dimes required: %d, balance owing $%.2f\n", dimes, owing);

nickels = owing / 0.05;
owing = owing - nickels * 0.05;

printf("Nickels required: %d, balance owing $%.2f\n", nickels, owing);


pennies = owing / 0.01;
owing = owing - pennies * 0.01;

printf("Pennies required: %d, balance owing $%.2f\n", pennies, owing);


return 0;
}
...