Вам не нужно менять тип q
, то есть int
- для которого вообще появляется это сообщение об ошибке.
Проблема в другом месте:
q
выходит за границы допустимых значений, которые должны храниться в int
, потому что в l oop:
while(cent >=25)
{
q++;
left = cent - 25;
}
значение для доказательства условия cent
никогда не уменьшается и поэтому l oop никогда не заканчивается. Вы присваиваете cent - 25
только left
, сама cent
не изменяется.
Кстати, вам не нужна переменная left
.
Скорее используйте:
//Counting coin
while(cent >= 25)
{
q++;
cent = cent - 25;
}
while(cent >= 10)
{
d++;
cent = cent - 10;
}
while(cent >= 5)
{
n++;
cent = cent - 5;
}
while(cent >= 1)
{
p++;
cent = cent - 1;
}
Более того:
printf("Dollar %i\n", cent);
неверно, поскольку вы пытаетесь распечатать деньги, чтобы изменить их в центах, а не в долларах:
printf("Change in Cent: %i\n", cent);
Исправленный код:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main(void)
{
//Assign value
int q = 0; int d = 0; int n = 0; int p = 0;
int count = 0;
float change;
// Promting user for change.
do
{
change = get_float("Change in Dollar:");
}
while(change < 0);
// Convert cent to dollar.
int cent = round(change * 100);
printf("Change in Cent: %i\n", cent);
//Counting coin
while(cent >= 25)
{
q++;
cent = cent - 25;
}
while(cent >= 10)
{
d++;
cent = cent - 10;
}
while(cent >= 5)
{
n++;
cent = cent - 5;
}
while(cent >= 1)
{
p++;
cent = cent - 1;
}
count = q + d + n + p;
printf("Total amount of coins: %i\n", count);
}