У меня есть следующий код, в котором условие if, кажется, не работает должным образом.
Например, если я введу 0,29, результаты выдаются
Кварталы:1 центов: 0 никелей: 4205264 пенсов: 4
Как вы можете видеть, это неправильно, как после первого оператора if, выполненного 'if (cents> = 25)', из-за этого останется остаток 4, который сохраняетсяв переменной «центы».Это должно означать, что следующие два оператора «IF» возвращают «0», а последний оператор if выполняется «if (cents> = 1)».Однако это не тот случай, так как вы можете видеть, что Никлес возвращает значение 4205264.
Когда вы вводите 1.17, результат возвращается, как и ожидалось:
Кварталы: 4 Даймы: 1 Никель: 1Копейки: 2
#include <cs50.h>
#include <math.h>
#include <stdio.h>
int main(void)
{
float dollars;
int cents;
int quartersUsed;
int dimesUsed;
int nickelsUsed;
int penniesUsed;
do
{
dollars = get_float("Float: ");
while (dollars <= 0) {
dollars = get_float("Float: ");
}
cents = roundf(dollars * 100);
printf("%i\n", cents);
if (cents >= 25) {
quartersUsed= cents / 25;
cents = cents % 25;
}
if (cents >= 10) {
dimesUsed = cents / 10;
cents = cents % 10;
}
if (cents >= 5) {
nickelsUsed = cents / 5;
cents = cents % 5;
}
if (cents >= 1) {
penniesUsed = cents / 1;
cents = cents % 1;
}
printf("Quarters: %i\n",quartersUsed);
printf("Dimes: %i\n",dimesUsed);
printf("Nickels: %i\n",nickelsUsed);
printf("Pennies: %i\n",penniesUsed);
}
while (dollars == false);
}