实验4_2.cpp

来自「VC开发的复数运算符重载源代码」· C++ 代码 · 共 82 行

CPP
82
字号
#include<iostream.h>
class complex//定义一个类
{
private: double real,imag;
public : complex(){real=imag=0.0;}
		 complex(double r, double i)
		 {real=r;imag=i;}
	   	 friend complex operator+(const complex& c1,const complex& c2);
         friend complex operator-(const complex& c1,const complex& c2);
         friend complex operator*(const complex& c1,const complex& c2);
         friend complex operator/(const complex& c1,const complex& c2);
		 friend void print(const complex& c);
};
complex operator+(const complex& c1,const complex& c2);//对下面主函数中用到的complex()函数提起申明
complex operator-(const complex& c1,const complex& c2);
complex operator*(const complex& c1,const complex& c2);
complex operator/(const complex& c1,const complex& c2);
void print(const complex& c);//为下面主函数中用的print()函数提前申明
void formatoutput();//为下面主函数中用到的这个formatoutput()函数提前申明

void main()
{formatoutput();
int a,b,c,d;
cout<<"please input the c1:";
cin>>a>>b;
cout<<"please input the c2:";
cin>>c>>d;

complex c1(a,b),c2(c,d),c3;
c3=c1+c2;
cout<<"\n c3=c1+c2=";
print(c3);
c3=c1-c2;
cout<<"\n c3=c1-c2=";
print(c3);
c3=c1*c2;
cout<<"\n c3=c1*c2=";
print(c3);
c3=c1/c2;
{if(c==0&&d==0)cout<<"error!分母为零,无意义"<<endl;
else{cout<<"\n c3=c1/c2=";
print(c3);}}
c3=(c1+c2)*(c1-c2)*c2/c1;
{if(a==0&&b==0)cout<<"error!分母为零,无意义"<<endl;
else{cout<<"\nc3=(c1+c2)*(c1-c2)*c2/c1=";
print(c3);}}}


complex operator+(const complex& c1,const complex& c2)//提前申明的函数的定义
{return complex(c1.real+c2.real,c1.imag+c2.imag);}

complex operator-(const complex& c1,const complex& c2)
{return complex(c1.real-c2.real,c1.imag-c2.imag);}

complex operator*(const complex& c1,const complex& c2)
{complex temp;
temp.real=c1.real*c2.real-c1.imag*c2.imag;
temp.imag=c1.real*c2.imag+c1.imag*c2.real;
return temp;
}

complex operator/(const complex& c1,const complex& c2)
{complex temp;
double t=c2.real*c2.real+c2.imag*c2.imag;
temp.real=(c1.real*c2.real+c1.imag*c2.imag)/t;
temp.imag=(c1.imag*c2.real-c1.real*c2.imag)/t;
return temp;
}

void print(const complex& c)//提前申明的print函数的定义
{if(c.imag<0)
cout<<c.real<<c.imag<<'i'<<endl;
else
cout<<c.real<<'+'<<c.imag<<'i'<<endl;
}
void formatoutput()//提前申明的formatoutput()函数的定义
{cout.setf(ios::showpoint);
cout.precision(5);
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?