Как мне превратить эту функцию во что-то лучше, например, цикл? - PullRequest
0 голосов
/ 21 апреля 2019

Итак, моя проблема в наборе задач 1 на первой неделе курса CS50 в Гарварде.Задачей было написание программы, которая рассчитывает наименьшее количество монет, возможных при получении сдачи.Я уже написал программу, и она работает, но я хотел знать, может ли кто-нибудь из вас рассказать мне, как еще улучшить мою функцию, которая вычисляет количество монет.Это в основном те же строки кода, которые копируются и вставляются 4 раза и просто меняют стоимость монеты внутри (25, 10, 5, 1).Может ли кто-нибудь помочь мне превратить это в какой-то цикл, так как, хотя копирование и вставка работает, мне кажется, что смотреть на меня плохо.

int calculate_coins(int change)
{
    //Count coins from 0
    int n = 0;

    //How much 25s can be used? 
    n += change / 25;
    //Calculate remaining change
    change %= 25;

    n += change / 10;
    change %= 10;

    n += change / 5;
    change %= 5;

    n += change / 1;
    change %= 1;

    return n;
}

1 Ответ

0 голосов
/ 21 апреля 2019

Я бы сделал массив глобальным, если бы я хотел использовать его где-нибудь еще. Кроме этого я согласен.

int value[] = { 25, 10, 5, 1 }; //global array

int calculate_coins(int change)
{
    for (int i = 0; i < 4; i++) 
    {
        n += change / value[i];
        change %= value[i];
    }

    return n;
}
...