C++学习,第三十二课
已有 523 次阅读2014-8-25 16:25
|个人分类:作业
#include<iostream>
#include<climits>
class Factorial
{
public:
Factorial(unsigned short num);
unsigned long getFactorial();
bool inRange() throw (const char *);/*声明这个函数可能会丢出异常*/
private:
unsigned short num;
};
Factorial::Factorial(unsigned short num)
{
this->num = num;
}
unsigned long Factorial::getFactorial()
{
unsigned long sum=1;
int i;
for (i= 1; i <= num; i++)
{
sum *= i;
}
return sum;
}
bool Factorial::inRange()
{
unsigned long max = ULONG_MAX;
int i;
for (i = num; i >= 1; --i)
{
max /= i;
}
if (max < 1)
{
throw"被粗,数太大了\n\n"; /*定义会丢出的异常内容*/
return false;
}
else
{
return true;
}
}
int main()
{
unsigned short num = 0;
std::cout << "请输入一个整数";
std::cin >> num;
Factorial fac(num);
try
{
if (fac.inRange())
{
std::cout << num << "的阶乘值为:" << fac.getFactorial() << "\n\n";
}
}
/*捕获异常*/
catch (const char *e)
{
std::cout << e;
}
system("pause");
return 0;
}