Ich schreibe ein Programm, das eine Eingabe nimmt und die geringste Anzahl von Münzen ausdrucken soll. Wenn ich das Programm ausführe und eine Eingabe eingabe, funktioniert es nicht wie erwartet und druckt nichts. Was mache ich hier falsch?CS50 PSet 1 Greedy
#include <stdio.h>
#include <cs50.h>
int main (void)
{
float f = 0;
int count = 0;//number of coins
do
{
printf("How much change is owed?\n");
f = GetFloat();
}
while (f < 0);
//Convert to cents
f = f * 100;
while (f > 0)
{
if (f > 25)
{
f = f - 25;
count++;
}
else if (f > 10)
{
f = f - 10;
count++;
}
else if (f > 5)
{
f = f - 5;
count++;
}
else if (f > 1)
{
f = f - 1;
count++;
}
}
printf("%d", count);
}
Es ist wahrscheinlich eine Endlosschleife. Beachten Sie die Lücke (Hinweis: Anders als die Ganzzahl) – BLUEPIXY
abhängig von den Bedingungen Ihre zweite Schleife könnte unendlich sein, da f ist ein float (Drucken Sie den Float-Wert von f am Ende der Schleife) – dvhh
Umgerechnet auf Cent, besser zu runden zu der nächsten ganzen Zahl 'f = rintf (f * 100);' oder 'f = roundf (f * 100);' – chux