您的位置:首页 > 其它

两个超大整数相加

2006-07-26 15:18 274 查看
#include<iostream>
#include<vector>
using namespace std;
const int N = 1024;

void Revert(char* str)
{
assert(str != NULL);
int len = strlen(str);
char *p = str;
char *q = str + len -1;

while(p < q)
{
*p ^= *q;
*q ^= *p;
*p ^= *q;
++p;
--q;
}
}
int main()
{
vector<int> vec(N);
char str1
;
char str2
;
memset(str1,0,N);
memset(str2,0,N);
cout<<"Input the data1."<<endl;
scanf("%[0-9]",str1);

Revert(str1);

cout<<str1<<endl;
fflush(stdin);
cout<<"Input the data2."<<endl;
scanf("%[0-9]",str2);
Revert(str2);
cout<<str2<<endl;

int size1 = strlen(str1);
int size2 = strlen(str2);

int si;
int maxsize;
if(size1 <= size2)
{
si = size1;
}
else
{
si = size2;
}
int t;
int i;
for(i=0;i<si;++i)
{
t =( str1[i] - '0' ) + ( str2[i] - '0' );
if(t>9)
{
vec[i] += t % 10;
vec[i+1] += 1;
}
else
{
vec[i] = t;
}
}
if(si == size1)
{
for(i=si;i<size2;++i)
{
t = str2[i] - '0';
vec[i] += t;
}
}
else if(si == size2)
{
for(i=si;i<size1;++i)
{
t = str1[i] - '0';
vec[i] += t;
}

}
reverse(vec.begin(),vec.end());
si = vec.size();
int k=0;
while(vec[k++] == 0);
cout<<"The result is : ";
for(i=k-1;i<si;++i)
{
cout<<vec[i];
}
cout<<endl<<endl;
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: