c++ 如何处理大数据

dudatong 2009-03-03 04:48:53
c++ 如何处理大数据

例如:
有这样一个整数 CString str=L"111111122222223333333444445555566666777778888899999999991010101010";
对它进行 + , - , * , / 的操作
...全文
503 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
自己下openssl,crypt++等大数库。
xtting_8984313 2009-03-03
  • 打赏
  • 举报
回复
要酱油
ysysbaobei 2009-03-03
  • 打赏
  • 举报
回复
mark,学习下
再顶
xiaoyuer5222 2009-03-03
  • 打赏
  • 举报
回复
给个算加法的

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
char* big_add(char *a,char *b);


int main()
{
char a[1000]={0};
char b[1000]={0};
while(scanf("%s%s",a,b)!=EOF)
{
printf("%s + %s = ",a,b);
printf("%s\n",big_add(a,b));
}
return 0;
}

char* big_add(char *a,char *b)
{
/* 大数相加 ,两个加数以字符串的形式出现,返回指向结果的指针 */
char c[1000]={0};
char t[1000];
int length_short;
int length_long;
int length;
int i;
int j;
int k;
char *resultptr;
char *str;
k=0;
/* 使a成为位数较小的数 */
if (strlen(a)>strlen(b))
{
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
length_short=strlen(a);
length_long=strlen(b);
/* 将较少位数的数a的各位和较大位数的数b的后若干位依次相加,各位的和依次存在数组c中 */
for (i=length_short-1,j=length_long-1;i>=0;i--,j--)
{
if (a[i]-48+b[j]-48>=10)
{
/* 若相加的和大于10,则要进位 */
c[k]+=a[i]+b[j]-48-10;
k++;
c[k]+=1;
}
else
{
c[k]+=a[i]+b[j]-48;
if(c[k]-'0'>=10)
{
c[k]-=10;
k++;
c[k]+=1;
}
else
k++;
}
}
/* 如果两个数的位数不同,则将较多位数的数b的剩下位依次存到数组c中 */
for (;j>=0;j--)
{

if(c[k]+b[j]-48>=10)
{
c[k]+=b[j]-10;
k++;
c[k]+=1;

}
else
{
c[k]+=b[j];
k++;
}

}
/* 若果两个数位数相同,且最高位有进位 */
if (c[k]!=0)
{
c[k]+=48;
c[k+1]='\0';
}
else
c[k]='\0';

length=strlen(c);
resultptr=(char*)malloc(length+1);
if(!resultptr)
exit(1);
str=resultptr;
for(i=length-1;i>=0;i--)
*str++=c[i];
*str='\0';

return resultptr;
}

结果:
111111222222233333333
444444555555577777777
111111222222233333333 + 444444555555577777777 = 555555777777811111110
happy002 2009-03-03
  • 打赏
  • 举报
回复
csdn中好多关于这个的问题

比如我随便找一个http://topic.csdn.net/t/20060106/19/4502424.html

在提问中输入“大数”下面有好多
太乙 2009-03-03
  • 打赏
  • 举报
回复
xtting_8984313 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 dudatong 的帖子:]
c++ 如何处理大数据

例如:
有这样一个整数  CString  str=L"111111122222223333333444445555566666777778888899999999991010101010";
对它进行 + , - , * ,  / 的操作

[/Quote]


何谓 - , * , /对字串?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧