}
};
intmain()
{
Equation2equation2(2,3,4,,equation21;
Equation3equation3(2,3,4,5,,equation31;
Equation4equation4(2,3,4,5,6,,equation41;
cout<<"方程为:
\n";
();
cout<();
cout<();
cout<cout<<"测试根:
\n二次:
";
cout<<();
cout<<"\n三次:
";
cout<<();
cout<<"\n四次:
";
cout<<();
cout<<"测试加法:
\n二次:
";
equation2+equation21;
();
cout<<"\n三次:
";
equation3+equation31;
();
cout<<"\n四次:
";
equation4+equation41;
();
cout<<"\n测试减法:
\n二次:
";
equation2-equation21;
();
cout<<"\n三次:
";
equation3-equation31;
();
cout<<"\n四次:
";
equation4-equation41;
();
return0;
}
2.实验结果:
六、第六题:
给自定义虚数类增加运算符*、/、++、--、==重载,注意++和--分前置和后置两种情况,编写主函数加以测试。
1.源程序代码:
验结果:
3.问题分析:
(七)第七题:
完善上一章定义大整数类的题目,成员函数包括加、减以及判大小,注意用运算符重载,编写主函数加以测试。
1.源程序代码:
#include
#include
#include
#include
usingnamespacestd;
classczs
{
intnum[100];
intlen;
charsign;
public:
czs()
{
for(inti=0;i<100;i++)
num[i]=0;
len=0;
sign='';
}
voidset(char*str)
{
if(str[0]=='-')
{
str++;
sign='-';}
elseif(str[0]=='+')
{
str++;
sign='';}
len=strlen(str);
for(inti=100-len;i<100;i++)
num[i]=str[i+len-100]-'0';
}
voidprint()
{
cout<inti=100-len;
while(num[i]==0)
i++;
if(i>=100)
cout<<"0";
for(;i<100;i++)
cout<cout<}
czsoperator+(czs&a)
{
if(sign==
{
intb=max(len,;
for(inti=99;i>100-b;i--)
{
num[i]=num[i]+[i];
num[i-1]=num[i-1]+num[i]/10;
num[i]=num[i]%10;
}
num[100-b]=num[100-b]+[100-b];
}
else
{
if(len>
for(inti=99;i>=len;i--)
{
num[i]=num[i][i];
if(num[i]<0)
{
num[i]=num[i]+10;
num[i-1]--;
}
}
elseif(len<
{
sign=;
for(inti=99;i>=len;i--)
{
num[i]=[i]-num[i];
if(num[i]<0)
{
num[i]=num[i]+10;
[i-1]--;
}
}
}
else
{
intb=0;
for(inti=100-len;i<100;i++)
if(num[i]!
=[i])
{
if(num[i]<[i])
b=1;
break;
}
if(b)
{
sign=;
for(inti=99;i>=len;i--)
{
num[i]=[i]-num[i];
if(num[i]<0)
{
num[i]=num[i]+10;
[i-1]--;
}
}
}
else
{
for(inti=99;i>=len;i--)
{
num[i]=num[i][i];
if(num[i]<0)
{
num[i]=num[i]+10;
num[i-1]--;
}}
}
}
}
return*this;
}
czsoperator-(czsa)
{
if(sign!
=
{
intb=max(len,;
for(inti=99;i>100-b;i--)
{
num[i]=num[i]+[i];
num[i-1]=num[i-1]+num[i]/10;
num[i]=num[i]%10;
}
num[100-b]=num[100-b]+[100-b];
}
else
{
if(len>
for(inti=99;i>=len;i--)
{
num[i]=num[i][i];
if(num[i]<0)
{
num[i]=num[i]+10;
num[i-1]--;
}
}
elseif(len<
{
if(sign='')
sign='-';
else
sign='';
for(inti=99;i>=len;i--)
{
num[i]=[i]-num[i];
if(num[i]<0)
{
num[i]=num[i]+10;
[i-1]--;
}
}
}
else
{
intb=0;
for(inti=100-len;i<100;i++)
if(num[i]!
=[i])
{
if(num[i]<[i])
b=1;
break;
}
if(b)
{
if(sign='')
sign='-';
else
sign=;
for(inti=99;i>=len;i--)
{
num[i]=[i]-num[i];
if(num[i]<0)
{
num[i]=num[i]+10;
[i-1]--;
}
}
}
else
{
for(inti=99;i>=len;i--)
{
num[i]=num[i][i];
if(num[i]<0)
{
num[i]=num[i]+10;
num[i-1]--;
}
}
}
}
}
return*this;
}
czsoperator>(czs&a)
{
czs:
:
operator-(a);
if(sign=='-')
cout<<"<";
else
{
inti=100-len;
while(num[i]==0&&i<100)
i++;
if(i==100)
cout<<"=";
else
cout<<">";
}
return*this;
}
};
voidmain()
{
chara[100],c[100],b[100];
czsd,e,f;
cout<<"请输入三个数:
"<cin>>a>>b>>c;
(a);
(b);
(c);
cout<<"前两个数的和为:
"<d+e;
();
cout<<"前两个数的和减去第三个数为:
"<d-f;
();
cout<<"减去后所得的数";
d>f;
cout<<"第三个数";
cout<}
2.实验结果: