Тема: Жадібний касир "влітає в копійку"
Шановні форумчане, хелп мі, плііз!
Задача: дати покупцеві рештуЮ використавши якнайменше монет. Монети номіналом 25, 10, 5, 1. Сумма, яку треба дати на решту, вводиться в гривнях ( 1.24, 0.56, .32, 1). Від`ємні значення не приймаються. Я на Сі написав отаке
#include <cs50.h>
#include <stdio.h>
#include <math.h>
int main (void)
{
int i; //*s-sum залишок, *//
float s, n;
printf ("O hai! How mach change is owed?.\n");
n = GetFloat ();
for ( ; n <= 0; )
{
scanf ("%f", &n);
}
s = n * 100;
for (i = 0; s >=25; i ++)
{
s = s - 25;
}
for ( ; s >= 10; i ++)
{
s = s - 10;
}
for ( ; s >= 5; i ++)
{
s = s - 5;
}
for ( ; s >=1; i ++)
{
s = s - 1;
}
printf ("%d\n", i);
return 0;
}
Програмка начебто працює, але іноді дає отакі помилки input of 4.2 yields output of 18
\ expected output, but not "22\n"
rejects a negative input like -.1
\ expected output, not a prompt for input
Ніяк не можу зрозуміти де косяк і як його позбутись. Підкажіть, кто може!