Алгоритм изменения монет - PullRequest
0 голосов
/ 14 марта 2011

просто хотел бы дважды проверить, что в этом коде не будет ошибок, в основном это связано с оператором модуля, в котором я не уверен.

Вопрос:

Проблема: НаписатьАлгоритм ACL, который, учитывая стоимость предмета (меньше или равный одному доллару), дает количество монет в 50, 20, 10, 5 и 1 цент, которые получит покупатель, если они передадут один доллар.Вы должны минимизировать количество монет в обмене.

Мое решение:

Algorithm coin_change
{
    int cost, change, fifty, twenty, ten, five, one;
    read(cost);
    change = 100 - cost;

    fifty = change / 50;
    change = change % 50;

    twenty = change / 20;
    change = change % 20;

    ten = change / 10;
    change = change % 10;

    five = change / 5;
    change = change % 5;

    one = change;

    print(fifty, twenty, ten, five, one);
}

Главное, в чем я не уверен, например, если изменение составляет 93 цента, то изменится до 43 центов, а затем до 3 центов.Теперь вопрос: "change = change % 10", когда изменение будет равно 3 центам, оно будет равно 3?Надеюсь, что это имело смысл.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 14 марта 2011

3 по модулю 10 даст вам 3 по определению.Это остаток, оставшийся при делении на заданное число.

Когда вы делите 3 на 10, вы получаете 0 с остатком 3. Таким образом, ваш алгоритм в этом смысле верен.

Обычноединственное, о чем вам нужно беспокоиться по модулю в компьютерных языках, это обработка отрицательных чисел - некоторые языки ведут себя по-разному.

Но вы не разбираетесь с отрицательными числами, так что не беспокойтесь очто.

1 голос
/ 14 марта 2011

Да.

change = change % 10 

это все равно вернет 3 независимо от того, было ли изменение изначально 43 или 3.

...