|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 spy 于 2015-3-27 18:15 编辑
#include <iostream.h>
#include <limits.h>
class Factoria
{
public
Factorial(unsigned short);
unsigned long getFactorial();
bool inRange();
private:
unsigned short num;
};
Factorial::Factorial(unsigned short num)
{
this->num = num;
}
unsigned long Factorial::getFactorial()
{
unsigned long result = 1;
for ( int i = 2; i <= num; i++ )
{
result *= i;
}
return result;
}
bool Factorial::inRange()
{
unsigned long max = ULONG_MAX;
for ( int i = num; i > 1; i-- )
{
max /= i;
}
if ( max < 1 )
{
return false;
}
else
{
return true;
}
}
int main()
{
unsigned short num;
cout << "请输入一个整数: ";
cin >> num;
Factorial factorial(num);
if ( factorial.inRange() )
{
cout << num << "的阶乘是: " << factorial.getFactorial() << "\n\n";
}
else
{
cout << "阶乘溢出!\n\n";
}
return 0;
} |
|