下面的是实现大数运算的程序,哪位高手可以帮我实现一下“ 减法和除法 ”啊,可别忘了帮我注释一下哦
#include
#include
#define MAX_LEN 100
class MEGA_INTEGER{
private:
int x1[MAX_LEN],x2[MAX_LEN],x3[MAX_LEN];
int n1,n2,n3;
void hadd(int *xx1,int *xx2,int *xx3,int xn1,int xn2,int &xn3)
{
int i,j,k=0;
if(xn1>xn2){
xn3=xn1;
for(i=0;i }
else {
xn3=xn2;
for(i=0;i }
for(i=0;i j=xx1[MAX_LEN-1-i]+xx2[MAX_LEN-1-i]+k;
k=j/10;
xx3[MAX_LEN-1-i]=j%10;
}
if(k&&(MAX_LEN-xn3>=1)){
xx3[MAX_LEN-1-xn3]=k;
xn3++;
}
}
void hmul(int *xx1,int *xx2,int xn1,int &xn2,int xn)
{
int i,j,k=0;
for(i=0;i j=xx1[MAX_LEN-1-i]*xn+k;
k=j/10;
xx2[MAX_LEN-1-i]=j%10;
}
xn2=xn1;
if(k&&(MAX_LEN-xn2>=1)){
xx2[MAX_LEN-1-xn2]=k;
xn2++;
}
for(i=0;i xn2-=i;
}
public:
MEGA_INTEGER(char *,char *);
void my_add(void);
// void my_sub(void);
void my_mul(void);
// void my_div(void);
void display(void);
};
MEGA_INTEGER::MEGA_INTEGER(char *y1="0",char *y2="0")
{
int i;
n1=strlen(y1);
n1=(n1>MAX_LEN)?MAX_LEN:n1;
for(i=0;ifor(i=0;in1-=i;
n2=strlen(y2);
n2=(n2>MAX_LEN)?MAX_LEN:n2;
for(i=0;ifor(i=0;in2-=i;
}
void MEGA_INTEGER::my_add(void)
{
hadd(x1,x2,x3,n1,n2,n3);
}
void MEGA_INTEGER::my_mul(void)
{
int i,j,k,x[MAX_LEN],xn,y[MAX_LEN],yn=0;
for(i=0;i hmul(x1,x,n1,xn,x2[MAX_LEN-1-i]);
for(j=0;j=1);j++){
for(k=0;k x[MAX_LEN-1]=0;
xn++;
}
hadd(x,y,x3,xn,yn,n3);
for(j=0;j yn=n3;
}
}
void MEGA_INTEGER::display(void)
{
int i;
for(i=0;i}
void main(void)
{
char s1[MAX_LEN],s2[MAX_LEN];
cout<<"\n\n";
cin>>s1>>s2;
MEGA_INTEGER xx(s1,s2);
xx.my_add();
xx.display();
cout<<"\n";
xx.my_mul();
xx.display();
}
--------------------next---------------------
阅读(1087) | 评论(0) | 转发(0) |