| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 785 人关注过本帖
标题:求助 创建一个CNumber的类
只看楼主 加入收藏
liubin150
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-4-18
收藏
 问题点数:0 回复次数:3 
求助 创建一个CNumber的类

我们期中考试的题目,要求如下
//创建一个CNumber的类
//支持任意精度整数
//加法,乘法,减法
//除法,阶乘和开方运算
//并给出侧试程序

哪位大侠会啊,给菜鸟我个c++的原程序,快啊
谢谢啊

搜索更多相关主题的帖子: CNumber 精度 减法 除法 
2006-04-18 15:33
踏魔狼
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:1322
专家分:33
注 册:2005-9-22
收藏
得分:0 
这个也不会,我看你还是别考了。

=×&D o I p R e E n C g T l X&×=
2006-04-18 23:54
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
难到不难,不过这个写出来估计不少于一千行代码,自己想吧!

天行健,君子以自强不息!!QQ:68660681
2006-04-20 17:41
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

给你一个求阶乘的例子
///////////////////////////////////
CString CNumber::Fac(int n)
{
CString m_etext;
BOOL minus = FALSE;
if(n<0)
{
n = -n;
if(n%2 != 0) minus = TRUE;
}

int j,jinwei,i,m;
m = n;

char ch[MAX];
int BaseNum[MAX],TotalNum[MAX],Num[MAX],Pos[MAX];
for(i=0;i<MAX;i++)
{
BaseNum[i]=TotalNum[i]=Num[i]=Pos[i]=0;
ch[i] = '\0';
}

i = MAX-1;

while( m>=10 )
{
BaseNum[i] = m % 10;
m = m / 10;
i--;
}
BaseNum[i] = m;

TotalNum[MAX-1]=1;

//the process of factorial
while (n > 0)
{
//The low digit is at the end of the array
//The array TotalNum saves the last result
//The array Num saves the result in the center process
//The array Pos saves the single digit of BaseNum multiply the TotalNum
for(i=MAX-1;i>=0;i--)
{
jinwei = 0;
for(j=MAX-1;j>=0;j--)
{
m = TotalNum[j]*BaseNum[i]+jinwei;
Pos[j] = m % 10;
jinwei = m / 10;
}

int l;
for(j=1;j<=MAX-1-i;j++)
{
for( l=1;l<MAX;l++) Pos[l-1] = Pos[l];
Pos[MAX-1] = 0;
}


jinwei = 0;
for(j=MAX-1;j>=0;j--)
{
m = Num[j]+Pos[j]+jinwei;
Num[j] = m % 10;
jinwei = m / 10;
}

for(j=0;j<MAX;j++) Pos[j]=0;
}

for(j=0;j<MAX;j++)
TotalNum[j] = Num[j];
for(j=0;j<MAX;j++) Num[j]=0;

int jiewei = 1;

//BaseNum[]--;
for(j=MAX-1;j>=0;j--)
if(BaseNum[j]>=jiewei)
{
BaseNum[j] -= jiewei;
jiewei = 0;
}
else
{
BaseNum[j] = BaseNum[j] + 10 - jiewei;
jiewei = 1;
}
n = n - 1;
}

i=0;
while (0 == TotalNum[i++]) {}

i -= 1;
for(j=0;i<MAX;i++,j++)
ch[j] = (char) (int('0')+TotalNum[i]);

if (minus) m_etext = "-";
else m_etext = "";

int LengthCh = strlen(ch);
m=0;//The m saves the amount of 0s that are at the end
for(i=MAX-1;i>=0;i--)
{
if (('0' == ch[i])||('\0' == ch[i]))
{
if ('0' == ch[i]) m++;
ch[i] = '\0';
}
else
break;
}

m_etext += ch;
if ((m>0)&&(LengthCh<=MAXSHOW-5))
for(i=1;i<=m;i++) m_etext += '0';
else if ((m>0)&&(LengthCh>MAXSHOW-5))
{
m_etext += "e+";
itoa(m,ch,10);
m_etext += ch;
}

return m_etext;
}


天行健,君子以自强不息!!QQ:68660681
2006-04-20 17:52
快速回复:求助 创建一个CNumber的类
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026965 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved