实验五运算符重载Word文件下载.docx
- 文档编号:5192485
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:16
- 大小:16.51KB
实验五运算符重载Word文件下载.docx
《实验五运算符重载Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验五运算符重载Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
doubleGet_real(){returnreal;
doubleGet_imag(){returnimag;
friendistream&
operator>
(istream&
is,constComplex&
C);
friendostream&
operator<
(ostream&
os,constComplex&
Complexoperator+(constComplex&
Complexoperator-(constComplex&
Complexoperator*(constComplex&
Complexoperator/(constComplex&
};
istream&
is,Complex&
C)
doubler,i;
r>
i;
C.Set(r,i);
returnis;
ostream&
cout.setf(ios:
:
fixed);
if(C.real==0)
if(C.imag>
-0.05&
&
C.imag<
0.05)
os<
"
0.0"
;
elseif(C.imag==1)
i"
elseif(C.imag==-1)
-i"
elseos<
setprecision
(1)<
C.imag<
else
C.real;
C.real<
+i"
elseif(C.imag>
0)
+"
elseif(C.imag<
returnos;
ComplexComplex:
operator+(constComplex&
Complextmp;
tmp.real=real+C.real;
tmp.imag=imag+C.imag;
returntmp;
operator-(constComplex&
tmp.real=real-C.real;
tmp.imag=imag-C.imag;
operator*(constComplex&
tmp.real=real*C.real-imag*C.imag;
tmp.imag=real*C.imag+imag*C.real;
operator/(constComplex&
tmp.real=(real*C.real+imag*C.imag)/(C.real*C.real+C.imag*C.imag);
tmp.imag=(imag*C.real-real*C.imag)/(C.real*C.real+C.imag*C.imag);
intmain()
intcas;
cas;
while(cas--)
Complexc1,c2;
charop;
c1>
op>
c2;
switch(op)
case'
+'
c1+c2<
endl;
break;
-'
c1-c2<
*'
c1*c2<
/'
c1/c2<
return0;
}
/*3249大数类*/
vector>
string>
algorithm>
classBigInteger
vector<
int>
num;
boolsign;
BigInteger(constBigInteger&
B){num=B.num;
sign=B.sign;
BigInteger(intsize=1,bool_sign=true){while(size--)num.push_back(0);
sign=_sign;
~BigInteger(){}
is,BigInteger&
B);
os,constBigInteger&
booloperator>
(constBigInteger&
B)const;
booloperator<
booloperator==(constBigInteger&
BigIntegeroperator=(constBigInteger&
BigIntegeroperator+(constBigInteger&
BigIntegeroperator-(constBigInteger&
BigIntegeroperator*(constBigInteger&
BigIntegeroperator/(constBigInteger&
B)
B.num.clear();
stringstr;
cin>
str;
for(inti=0;
i!
=str.size();
i++)
B.num.push_back(str[i]-'
0'
);
returnis;
if(B.sign==false)os<
'
=B.num.size();
B.num[i];
returnos;
boolBigInteger:
operator>
B)const
if(num.size()>
B.num.size())
returntrue;
if(num.size()==B.num.size())
=num.size();
if(num[i]>
B.num[i])
elseif(num[i]<
returnfalse;
operator<
if(num.size()<
if(num[i]<
elseif(num[i]>
operator==(constBigInteger&
if(num==B.num&
sign==B.sign)
BigIntegerBigInteger:
operator=(constBigInteger&
num=B.num;
sign=B.sign;
return*this;
operator+(constBigInteger&
inti,j;
intlen0=num.size(),len1=B.num.size();
intlen2=max(len0,len1);
intt=len2;
BigIntegerA(len2+1,true);
for(i=len0-1,j=len1-1;
i>
=0&
j>
=0;
i--,j--)
A.num[t--]=num[i]+B.num[j];
while(i>
=0)
A.num[t--]=num[i--];
while(j>
A.num[t--]=B.num[j--];
for(i=len2;
i>
i--)
if(A.num[i]>
=10)
{
A.num[i-1]+=A.num[i]/10;
A.num[i]%=10;
}
while(!
A.num[0]&
A.num.size()>
1)
A.num.erase(A.num.begin()+0);
returnA;
operator-(constBigInteger&
boolsign=true;
BigIntegera(*this),b(B);
if(a<
b)
swap(a,b);
swap(len0,len1);
sign=false;
BigIntegerA(len0,sign);
A.num[i]=a.num[i]-b.num[j];
while(i>
A.num[i]=a.num[i];
i--;
for(i=len0-1;
0;
if(A.num[i]<
A.num[i]+=10;
A.num[i-1]--;
while(!
A.num.erase(A.num.begin()+0);
operator*(constBigInteger&
inti,j;
intlen2=len0+len1-1;
BigIntegerA(len2,true);
for(j=len1-1;
j>
j--)
A.num[i+j]+=a.num[i]*b.num[j];
for(i=len2-1;
if(A.num[i]>
A.num[i-1]+=A.num[i]/10;
A.num[i]%=10;
operator/(constBigInteger&
BigIntegerc;
BigIntegerd(*this);
intlen0=num.size(),len1=B.num.size(),lend=len1;
inti1,i2,i,j,jj,carry,cf;
j=0;
for(i1=len1-1;
i1<
len0;
++i1)
if(lend<
len1)
d.num[lend]=num[i1+1];
c.num.push_back(0);
++j;
++lend;
elseif(lend==len1)
jj=1;
for(i=0;
i<
lend;
++i)
if(d.num[i]>
elseif(d.num[i]<
B.num[i])
jj=0;
if(jj==0)
continue;
if(jj==1||lend>
cf=jj=0;
while(d.num[jj]<
=0&
jj<
lend)
++jj;
if(lend-jj>
len1)cf=1;
elseif(lend-jj<
len1)cf=0;
i2=0;
cf=1;
for(i=jj;
if(d.num[i]<
B.num[i2])
cf=0;
elseif(d.num[i]>
B.num[i2])
++i2;
}//else
while(cf)
i2=len1-1;
cf=0;
for(i=lend-1;
=lend-len1;
--i)
d.num[i]=d.num[i]-B.num[i2];
d.num[i]=d.num[i]+10;
carry=1;
--d.num[i-1];
elsecarry=0;
--i2;
++c.num[j];
jj=0;
while(d.num[jj]<
lend)
++i)
}//while
lend-jj;
d.num[i]=d.num[i+jj];
d.num[i]=num[i1+1];
lend=i+1;
++j;
}//for
c.num[0]&
c.num.size()>
{c.num.erase(c.num.begin()+0);
j--;
BigIntegerA(j,true);
j;
A.num[i]=c.num[i];
BigIntegera,b;
while(cin>
a>
b)
a+b<
a-b<
a*b<
a/b<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 运算 重载