После работы на жадных / ок sh в CS50. сегодня меня накачали так как все работало правильно. Я вернулся и проверил значения, которые он предлагает -1,00, 0,00, foo, а затем, когда я попытался использовать положительное целое число, например 0,80, счетчик был неверным, добавив к нему дополнительные числа. Я предполагаю, что между проверкой на отрицательные значения, ноль и символы я должен был что-то сделать в своем коде, чтобы изменить его, как снова, я запустил 5 или более кодов, которые функционировали правильно. Я насквозь прочесал свой код и не могу понять, что сейчас сбивает мой счетчик. Может ли кто-нибудь указать мне, где искать?
Цель состоит в том, чтобы указать минимальное количество монет, которое можно использовать для данного количества изменений. Например, за 65 центов это будет 4 (две четверти, один цент, один никель)
Мой код указан ниже:
#include <cs50.h>
#include <stdio.h>
#include <math.h>
int main(void)
{
float change;
do {
change = get_float("Change owed:\n");
} while (change <= 0);
float cents;
cents = round(change * 100);
printf("%f cents \n", cents);
int counter = 0;
do {
cents = cents - 25;
counter = counter + 1;
} while (cents >= 25);
do {
cents = cents - 10;
counter = counter + 1;
} while (cents >= 10);
do {
cents = cents - 5;
counter = counter + 1;
}
while (cents >= 5);
do {
cents = cents - 1;
counter = counter + 1;
} while (cents >= 1);
printf("%i \n" , counter);
}
Любое понимание приветствуется!