int(3) возвращает 2 (C++) Uri Online Judge
Дорогая община. Я пытался решить некоторые проблемы в URI Online Judge
Конкретно этот:
https://www.urionlinejudge.com.br/judge/en/problems/view/1021
Я думаю, что нашел хорошую душу. Но у этого есть проблема с определенным входом.
Вот код:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
float n[] {100, 50, 20, 10, 5, 2, 1, .5, .25, .1, .05, .01};
float x;
int j = 0;
string tipo[] {"nota(s)", "moeda(s)"};
main(){
cin >> x;
cout<< fixed;
cout<< setprecision(2);
cout<< "NOTAS:\n";
for (int i = 0; i < 12; i++){
cout<< int(x/n[i]) << " " << tipo[j]<< " de R$ " << n[i] << endl;
x = fmod(x, n[i]);
if (i == 5) {cout<< "MOEDAS:\n"; j=1;}
}
}
Если вы используете 576.73 в качестве входных данных... Лас номер неверный
Вместо "3 moeda(s) de R$ 0.01" он возвращает "2 moeda(s) de R$ 0.01"
Я проверил все варианты, и он работает правильно, но в конце, когда это сделать:
int (0.03 / 0.01) // Возвращает 2
И x = fmod (0,03, 0,01) // x = 1
Кто-то имеет представление о том, что происходит??
Все остальные входы, которые я пробовал, работают должным образом.
Спасибо за ваше время.