Я пытаюсь написать жадный алгоритм с вводом, который должен возвращать наименьшее количество монет, которые будут использоваться в изменении, но он не возвращает никаких значений. Я не уверен почему. Он просто запрашивает ввод, затем ничего не отображает.
Я создал предыдущий поток, в котором была обнаружена ошибка, которая привела к бесконечному циклу, который был сжат, но теперь, похоже, в моей логике есть еще одна ошибка.
#include <stdio.h>
#include <cs50.h>
#include <math.h>
// declare variable change_owed, num_coins, and input globally
float change_owed = 0;
float input;
int num_coins;
int main(void)
{
// makes sure the input is non-negative
do
{
input = get_float("Amount paid\n");
}
while(input <=0);
// begin checking
while(input > 0)
{
if(input - .25 >= 0) // quarters
{
num_coins++; // number of coins used, to be printed later, is incremented
input = input - .25; // coin is subtracted from total
}
if (input - .10 >= 0) // dimes
{
num_coins++;
input = input - .10;
}
if (input - .05 >= 0) // nickels
{
num_coins++;
input = input - .05;
}
if (input - .01 >= 0) // pennies
{
num_coins++;
input = input - .01;
}
}
printf("%i", num_coins);
}