#include <iostream>
using namespace std;
char* AddNum(char*a, char* b)
{
int maxlen = max(strlen(a), strlen(b));
char *p = new char[maxlen + 2];
p[maxlen + 1] = '\0';
char *pA = a+strlen(a)-1;
char *pB = b+strlen(b)-1;
int m = 0;
int n = 0;
//进位
int c = 0;
for(int i = maxlen; i>0; i--)
{
m = n = 0;
if((pA+1) != a)
{
m = *pA - 48;
pA--;
}
if((pB + 1) != b)
{
n = *pB - 48;
pB--;
}
*(p+i) = (m+n+c)%10 + 48;
c = (m+n+c)/10;
}
*p = 48+c;
return p;
}
char* SubNum(char* a, char* b)
{
int maxlen = max(strlen(a), strlen(b));
char* p = new char[maxlen+1];
p[maxlen] = '\0';
char* pA = a+strlen(a)-1;
char* pB = b+strlen(b)-1;
int m, n, c;
m = n = c = 0;
for(int i = maxlen; i>0; i--)
{
if((pA+1) != a)
{
m = *pA - 48;
pA--;
}
if((pB+1) != b)
{
n = *pB - 48;
pB--;
}
if( m<n )
{
*(p+i) = (10+m+n-c)+48;
c=1;
}
else
{
*(p+i) = (m+n-c)+48;
c=0;
}
}
return p;
}
int main()
{
char* a = "10000000000000000000000000000000000000000000000000000000";
char* b = "9999999999999999999999999999999999999999999999999999999";
char* p = AddNum(a, b);
cout << "The result of a+b is: ";
cout << p << endl;
char* q = SubNum(a, b);
cout << "The result of a+b is: ";
cout << q << endl;;
return 0;
}
using namespace std;
char* AddNum(char*a, char* b)
{
int maxlen = max(strlen(a), strlen(b));
char *p = new char[maxlen + 2];
p[maxlen + 1] = '\0';
char *pA = a+strlen(a)-1;
char *pB = b+strlen(b)-1;
int m = 0;
int n = 0;
//进位
int c = 0;
for(int i = maxlen; i>0; i--)
{
m = n = 0;
if((pA+1) != a)
{
m = *pA - 48;
pA--;
}
if((pB + 1) != b)
{
n = *pB - 48;
pB--;
}
*(p+i) = (m+n+c)%10 + 48;
c = (m+n+c)/10;
}
*p = 48+c;
return p;
}
char* SubNum(char* a, char* b)
{
int maxlen = max(strlen(a), strlen(b));
char* p = new char[maxlen+1];
p[maxlen] = '\0';
char* pA = a+strlen(a)-1;
char* pB = b+strlen(b)-1;
int m, n, c;
m = n = c = 0;
for(int i = maxlen; i>0; i--)
{
if((pA+1) != a)
{
m = *pA - 48;
pA--;
}
if((pB+1) != b)
{
n = *pB - 48;
pB--;
}
if( m<n )
{
*(p+i) = (10+m+n-c)+48;
c=1;
}
else
{
*(p+i) = (m+n-c)+48;
c=0;
}
}
return p;
}
int main()
{
char* a = "10000000000000000000000000000000000000000000000000000000";
char* b = "9999999999999999999999999999999999999999999999999999999";
char* p = AddNum(a, b);
cout << "The result of a+b is: ";
cout << p << endl;
char* q = SubNum(a, b);
cout << "The result of a+b is: ";
cout << q << endl;;
return 0;
}