확률 계산시 소수를 이용했을시
(10*9) / (2*1) - ①
(10/2) * (9/1) - ②
위의 경우가 있을시 둘다 계산 식은 같다 .
그러나 부동 소수점 오버플로 방지가 되는것은 ② 번이다.
그럼 이를 이용한 한 예를 보겠다.
#include <iostream>
(10*9) / (2*1) - ①
(10/2) * (9/1) - ②
위의 경우가 있을시 둘다 계산 식은 같다 .
그러나 부동 소수점 오버플로 방지가 되는것은 ② 번이다.
그럼 이를 이용한 한 예를 보겠다.
#include <iostream>
using namespace std;
long double probability(unsigned numbers, unsigned picks);
int main()
{
double total,choices;
cout<<"전체 수의 개수와 뽑을 수의 개수를 입력하십시오:\n";
while((cin>>total>>choices)&& choices<=total)
{
cout<<"당신이 이길 확률은 ";
cout<<probability(total,choices);
cout<<"번 중에서 한 번입니다.\n";
cout<<"다시 두 수를 입력하십시오.(끝내려면 q를 입력) : ";
}
cout<<"프로그램을 종료합니다.\n";
return 0;
}
long double probability(unsigned numbers, unsigned picks)
{
long double result = 1.0;
long double n;
unsigned p;
for(n=numbers, p=picks; p>0;n--,p--) result = result *n / p;
return result;
}
'Soft Ware > C++ 언어!!' 카테고리의 다른 글
구도체 및 클래스시 어느 멤버 변수만 Swap 할때(명시적 특수화) (0) | 2011.10.22 |
---|---|
Template 을 이용한 Swap (0) | 2011.10.22 |
cout 의 입력큐 초기화 (0) | 2011.10.20 |
cin 에 대해서 !!! (0) | 2011.10.19 |
삼항연산자!! (0) | 2011.10.19 |