Я пытаюсь решить проблему жадности для CS50, но она не вычисляется правильно. Я всегда остаюсь с 0,01 вместо 0,00 от стоимости отдыха. Все работает гладко, за исключением копейки в конце. Я не уверен, что делать. Когда вы вводите изменение, попробуйте 9.99. По количеству без гроши он отлично работает.Подборка недопустима в моем коде
Большое спасибо!
int main()
{
// declaring variables for coins
float const qtr = 0.25;
float const dimes = 0.10;
float const nick = 0.05;
float const penny = 0.01;
//declaring variables for coin counters
int qtr_count = 0;
int dimes_count = 0;
int nick_count = 0;
int penny_count = 0;
//declaring variables for total debt and rest of debt
float total;
float rest;
//loop for testing is the number entered valid
do
{
printf("Enter the ammount of money he owns:\n");
scanf("%f", &total);
}
while (total < 0.00) ;
rest = total;
//Loop for calculating coins
while (rest >= qtr)
{
qtr_count++;
rest -= 0.25;
}
while (rest >= dimes)
{
dimes_count++;
rest -= 0.10;
}
while (rest >= nick)
{
nick_count++;
rest -= 0.05;
}
while (rest >= penny)
{
penny_count++;
rest -= 0.01;
}
printf("You need go give: \n %i quarters, \n %i dimes, \n %i nick, \n %i pennies \n", qtr_count, dimes_count, nick_count, penny_count);
return 0;
}
Денежные расчеты, подобные этому, могут быть выполнены исключительно с помощью ints. Вы просто умножаете то, что вам нужно на 100. Вероятно, это будет работать и на малой скорости. – StoryTeller