大数乘法:
#include <iostream>
#include <string>
using namespace std;
#define N 999
class Mult
{
private:
char result[N];
char *m1;
char *m2;
int len1;
int len2;
public:
Mult(char *p1,char *p2,int a1,int a2):m1(p1),m2(p2),len1(a1),len2(a2){}
~Mult()
{
delete m1;
delete m2;
cout<<"delete ok"<<endl;
}
char* big_mult();
};
char* Mult::big_mult()
{
int i,j;
int tmp;
int r,k;
//初始化
for(i=0;i<=N;i++)
{
result[i] = 0;
}
for(i=len1-1,r=len1+len2-1;i>=0;r--,i--)
for(j=len2-1,k=r;j>=0;j--,k--)
{
tmp = (m1[i]-'0')*(m2[j]-'0');
// cout << tmp << endl;
result[k] = tmp + result[k];
if(result[k]>9)
{
result[k-1] = result[k]/10 + result[k-1];
result[k] = result[k]%10;
}
// cout << result[k]+'0' << endl;
// printf("%c/n",result[k]+'0');
}
for(i=len1+len2-1;i>=0;i--)
{
if((result[i]<10)&&(result[i]>=0))
result[i] = result[i]+'0';
// cout << result[i] ;
}
return result;
}
int main()
{
char p1[N/2];
char p2[N/2];
cout << "输入两个数:" << endl;
cin >> p1 ;
cin >> p2 ;
int n = strlen(p1);
int m = strlen(p2);
int i;
//创建乘法类
Mult *mul = new Mult(p1,p2,n,m);
char *result = mul->big_mult();
cout << "结果是:"<<endl;
for(i=0;i<=n+m-1;i++)
{
if(result[i]>='0' && result[i]<='9')
// cout << result[i]<<endl;
printf("%c",result[i]);
}
cout<<endl;
return 0;
}