следующий предложенный код:
- выполняет операцию с общим количеством необходимых монет (при условии отсутствия бумажных денег)
- правильно разделяет функции
- правильно использует прототип для подфункции
- правильно конвертирует из
float
в int
- правильно определяет константы как
float
, включая десятичную точку и завершающий 'f'
и теперь предложенный код:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int get_change( float dollars );
int main(void)
{
// prompt user for "0.00" value
float dollars;
do
{
dollars = get_float("Change owed: ");
}
while(dollars <= 0.0f);
printf("%d\n", get_change(dollars));
}
// returns number coins needed, not their denominations
int get_change( float dollars )
{
//calculate which coins will be used
int cents = (int)floorf(dollars * 100.0f);
int coins = 0;
int denom[] = {25, 10, 5, 1};
for (int i = 0; i < 4; i++)
{
coins += cents / denom[i];
cents = cents % denom[i];
}
return coins;
}