나는 간단한 greedy 알고리즘을 작성했지만 어떻게 든 작동하지 않는다.간단한 욕심 많은 알고리즘. 무한 루프
#include <stdio.h>
#include <iostream>
#include <conio.h>
int main(void)
{
float change;
std::cout << "Change: ";
std::cin >> change;
int quantity = 0;
while(change > 0.0){
if(change >= 0.5){
change -= 0.5;
}
else if(change >= 0.25){
change -= 0.25;
}
else if(change >= 0.1){
change -= 0.1;
}
else if(change >= 0.05){
change -= 0.05;
}
else if(change >= 0.01){
change -= 0.01;
}
quantity++;
std::cout << change << std::endl;
}
std::cout << quantity << std::endl;
_getch();
return 0;
}
0.5와 0.25에서 작동하지만 0.01 또는 0.1에서는 작동하지 않습니다. (그것은 정말 작은 숫자를 반환하는 것처럼 보입니다) 어디에 문제가 있는지 알 수 없습니다.
// EDIT 가 문제가 당신은 변화가 0.01와 0.0 사이 인 경우 필요
매개 변수 목록으로 볼 때 유효한 것은 유효하지 않습니다. 또한 main()은 일반적인 argc/argv와 선택적으로 envp를 가져야합니다. –
사용자가 '0.001'을 입력하면 예상되는 출력은 무엇입니까? – Kevin
통화 계산에 부동 소수점을 사용하지 마십시오. 그것부터 시작하십시오. – WhozCraig