谁帮我解决这个。代码是vc++6.0编的,要求在下面,我编译没错,但是运行的话程序会出现内存不够。 20

大整数阶乘1系统的基本功能及要求(1)写一个类BigInteger,并有如下成员函数operator+、operator*,即整数的四则运算并重载运算符。(2)用该大整数... 大整数阶乘
1系统的基本功能及要求
(1)写一个类BigInteger,并有如下成员函数operator+、operator*,即整数的四则运算并重载运算符。
(2)用该大整数计算n的阶乘并显示出来。(n=【1,100】)
2程序执行过程
(1)系统从键盘读入自然数n
(2)输出运算的结果,为便于观察结果,每输出四位中间插入空格,格式如下(例如,n=12):12!=4790 0160 0
(3)询问用户是否继续进行,用户选择“是”,转(1),否则退出程序。
3算法要求及提示
(1)因为n较大时,n!的结果将超出长整型的保存范围,因此不能用long int型的变量来保存。本算法要求用int数组来存储。

#include<iostream.h>
#include<cmath>
class BigInteger
{
private:
public:
int n;
int nn[200];
BigInteger ()
{
for(int i=0;i<=199;i++)
nn[i]=0;
}
BigInteger (int n)
{
this->n=n;
for(int i=0;i<=199;i++)
nn[i]=0;
}
void zhuanhuan()//将整数分解并颠倒顺序存入大整数对象的存储区
{
while(n>0)
{
int i=0;
nn[i]=n%10;
n/=10;
i++;
}
}
BigInteger operator + (BigInteger x)
{
BigInteger y;
int shifoujinwei=0;
int jinwei;
int yushu;
for(int wei=0;;wei++)
{
jinwei=nn[wei]+x.nn[wei]+shifoujinwei;
shifoujinwei=jinwei/10;
yushu=jinwei%10;
y.nn[wei]=yushu;
}
return y;
}
BigInteger operator * (BigInteger x)
{
BigInteger y;
for(int index=0;index<199;index++)
{ //比如说做到25*34
BigInteger y1;//y1是25*34的25*3
BigInteger y2;//y2是25*34的(25*3)*10
for(int i=0;i<nn[index];i++)
{
y1=y1+x;
}
for(int j=0;j<pow(10,index);j++)
y2=y2+y1;
y=y+y2;
}
return y;
}
void out()
{
for(int i=199;;i--)
if(nn[i]!=0)
break;
for (int index=0;i>=0;i--)
{
if(index%4==0)
cout<<" ";
cout<<nn[i];
index++;
}
cout<<endl;
}
~BigInteger(){};
};

int main()
{
//判断是否继续
for(int k=1;k==1;)
{
//输入n
int n;
cout<<"本程序用于计算1~100内数的阶乘!"<<endl<<"现在请输入n"<<endl;
cin>>n;
//检查n的合理性
while (n <= 0 || n > 100)
{
cout<<"输入错误,请输入合理的数据!"<<endl;
cin>>n;
}
//创建对象jieceng
BigInteger jieceng(n);
//将整数分解并颠倒顺序存入大整数对象的存储区
jieceng.zhuanhuan();
//计算阶乘
int t=1;
BigInteger guding;
BigInteger result;
BigInteger index;
guding.nn[0]=1;
result.nn[0]=1;
index.nn[0]=1;
for (index=1;t<=n;index=index+guding)
{
result=result*index;
t++;
}
//输出阶乘
result.out();
cout<<"是否继续计算其它数的阶乘?"<<endl<<"是=1,否=2"<<endl;
cin>>k;
}
return 0;
}
int nn[200];//这个数组需要初始化嘛?

BigInteger ()
{
for(int i=0;i<=199;i++)//这个初始化对嘛?
nn[i]=0;
}
BigInteger (int n)
{
this->n=n;
for(int i=0;i<=199;i++)//这个初始化对嘛?
nn[i]=0;
展开
 我来答
164zsq
2011-12-05 · TA获得超过467个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:442万
展开全部
程序问题较多,首先大整数存储及转化有问题,再是感觉基本C++语法不是很熟,基本规范没有掌握,找相关代码看一下吧
更多追问追答
追问
我自己找不出问题,所以让你们一起看看啊。今天就交出程序设计了,实在没时间再去看书了。这个程序我自己编写的,累死了。。。
追答
我推荐你在网上搜一个相关的程序参考一下,你这程序有一个大体的框架,也知道要用到哪些东西,但是核心部分很混乱,哥们,搜一个然后比较着学习一下也不错,毕竟这是一个比较经典的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzw8115
2011-12-06 · TA获得超过223个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:85.9万
展开全部
BigInteger operator + (BigInteger x)
{
BigInteger y;
int shifoujinwei=0;
int jinwei;
int yushu;
for(int wei=0;;wei++)////////////////////什么时候退出循环????
{
jinwei=nn[wei]+x.nn[wei]+shifoujinwei;
shifoujinwei=jinwei/10;
yushu=jinwei%10;
y.nn[wei]=yushu;
}
return y;
}
更多追问追答
追问
貌似忘了打了
追答
所以内存不够用了,没别的问题给分吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qwe85196075
2011-12-05
知道答主
回答量:10
采纳率:100%
帮助的人:7987
展开全部
看都看不懂 还想要我们来解答 我TM⊙﹏⊙b汗了
追问
你看不懂还回答。。你浪费我感情啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式