实验五运算符重载Word文件下载.docx

上传人:b****1 文档编号:5192485 上传时间:2023-05-04 格式:DOCX 页数:16 大小:16.51KB
下载 相关 举报
实验五运算符重载Word文件下载.docx_第1页
第1页 / 共16页
实验五运算符重载Word文件下载.docx_第2页
第2页 / 共16页
实验五运算符重载Word文件下载.docx_第3页
第3页 / 共16页
实验五运算符重载Word文件下载.docx_第4页
第4页 / 共16页
实验五运算符重载Word文件下载.docx_第5页
第5页 / 共16页
实验五运算符重载Word文件下载.docx_第6页
第6页 / 共16页
实验五运算符重载Word文件下载.docx_第7页
第7页 / 共16页
实验五运算符重载Word文件下载.docx_第8页
第8页 / 共16页
实验五运算符重载Word文件下载.docx_第9页
第9页 / 共16页
实验五运算符重载Word文件下载.docx_第10页
第10页 / 共16页
实验五运算符重载Word文件下载.docx_第11页
第11页 / 共16页
实验五运算符重载Word文件下载.docx_第12页
第12页 / 共16页
实验五运算符重载Word文件下载.docx_第13页
第13页 / 共16页
实验五运算符重载Word文件下载.docx_第14页
第14页 / 共16页
实验五运算符重载Word文件下载.docx_第15页
第15页 / 共16页
实验五运算符重载Word文件下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验五运算符重载Word文件下载.docx

《实验五运算符重载Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验五运算符重载Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。

实验五运算符重载Word文件下载.docx

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<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2