Я закончил испытание, и мой первый код на C работал, по-видимому, хорошо, возвращая каждый раз правильное минимальное количество монет, необходимое для внесения изменений. Затем, когда я попытался немного «почистить» и удалить избыточный printf, похоже, все пошло не так. Я не могу разобраться с этим, я очень смущен ... Почему это происходит?
#include <cs50.h>
#include <stdio.h>
#include <math.h>
int q = 25; //variable for quarters
int d = 10; //dimes
int n = 5; //nickels
int p = 1; //pennies
int x; //variable for final result
int r; // variable for the reminder
float amount(string prompt);
int main(void)
{
float a = amount("Enter dollar amount with format 0.00: $");
int cents = round(a * 100);
printf("Your input: $ %.2f", a);
// printf(", which amounts to %i total.\n", cents); //WHY DELETING THIS LINE MESSES UP WITH THE FLOAT AND THE RESULT?
x = cents / q;
r = cents % q;
x = x + (r / d);
r = r % d;
x = x + (r / n);
r = r % n;
x = x + (r / p);
printf("%i\n", x);
r = r % p;
printf("%i\n", r);
}
float amount(string prompt)
{
float a;
do {
a = get_float("%s", prompt);
}
while (a <= 0);
return a;
}