Я новичок в C, и я беру CS50.У меня проблемы с pset1 / cash.Я понятия не имею, что не так с моим кодом.Программа сначала спрашивает пользователя, сколько должно быть внесено изменений, а затем выплевывает минимальное количество монет, с помощью которых можно внести указанное изменение.Он работает нормально с большинством входов, но когда я проверяю его, я получаю ожидаемое "18 \ n", а не "22 \ n" Пожалуйста, что мне нужно изменить?
#include <stdio.h>
#include <cs50.h>
int main(void)
{
float change;
int cents, cents2, cents3, cents4;
int total = 0;
//Ask for user input and check
do
{
change = get_float("How much change?\n");
}
while (change < 0);
change = (change * 100) / 0.01;
//Multiply the float numbers
if (change < 1)
{
change *= 100;
}
else if (change < 10)
{
change *= 10;
}
//Change to int
cents = change;
//How many quarters
while (cents >= 2500)
{
cents -= 2500;
total++;
}
cents2 = cents;
//How many dimes
while (cents2 >= 1000)
{
cents2 -= 1000;
total++;
}
cents3 = cents2;
//How many nickels
while (cents3 >= 500)
{
cents3 -= 500;
total++;
}
cents4 = cents3;
//How many pennies
while (cents4 >= 100)
{
cents4 -= 100;
total++;
}
printf("%i\n", total);
}
Редактировать: Я наконец нашел свою ошибку.В этой строке: изменить = (изменить * 100) / 0,01;Я добавил 0,01 к нему, и теперь это работает. изменение = (изменение * 10000) + 0,01;