Cs50 pset1-cash ожидаемое "18 \ n", а не "22 \ n" - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в 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;

...