📄 complex.cpp
字号:
#include "stdio.h"
#include "iostream.h"
#include "math.h"
//定义complex类
class complex
{
friend ostream &operator<<(ostream &,const complex &);
friend istream &operator>>(istream &, complex &);
public:
complex(double=0,double=0);
setcomplex(double=0,double=0);
complex operator+(const complex &)const;
complex operator-(const complex &)const;
complex operator*(const complex &)const;
complex operator/(const complex &)const;
complex &operator=(const complex &);
int operator==(const complex &);
int operator!=(const complex &);
private:
double real;
double imaginary;
};
//complex类的相关成员函数的定义,重载
complex::complex(double r,double imag)
{
real=r;
imaginary=imag;
}
complex::setcomplex(double r,double imag)
{
real=r;
imaginary=imag;
}
//重载复数加法“+”运算
complex complex::operator+(const complex &second)const
{
complex sum;
sum.real=real+second.real;
sum.imaginary=imaginary+second.imaginary;
return sum;
}
//重载复数减法“-”运算
complex complex::operator-(const complex &second)const
{
complex diff;
diff.real=real-second.real;
diff.imaginary=imaginary-second.imaginary;
return diff;
}
//重载复数乘法“*”运算
complex complex::operator*(const complex &second)const
{
complex mult;
mult.real=real*second.real-imaginary*second.imaginary;
mult.imaginary=imaginary*second.real+real*second.imaginary;
return mult;
}
//重载复数除法“/运算
complex complex::operator/(const complex &second)const
{
complex div;
if(second.imaginary==0 &&second.real==0)
{
cout<<"The Div does not exist !!";
return 0;
}
else
{
div.real=(real*second.real+imaginary*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
div.imaginary=(imaginary*second.real-real*second.imaginary)/(pow(second.real,2)+pow(second.imaginary,2));
return div;
}
}
//重载复数赋值“=”运算符
complex& complex::operator=(const complex &right)
{
real=right.real;
imaginary=right.imaginary;
return *this;
}
//重载复数“==”运算 当实部和虚部的差值分别小于0.00001时,认为两复数相等,否则,不相等。
int complex::operator==(const complex &right)
{
if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
return 1;
else
return 0;
}
//重载复数“!=”运算 当实部和虚部的差值分别小于0.00001时,认为两复数相等,否则,不相等。
int complex::operator!=(const complex &right)
{
if(fabs(real-right.real)<0.0001 && fabs(imaginary-right.imaginary<0.0001))
return 0;
else
return 1;
}
//重载复数流输出运算符
ostream &operator<<(ostream &output,const complex &comp)
{
output<<comp.real<<((comp.imaginary<0)?"-":"+")<<fabs(comp.imaginary)<<"i";
return output;
}
//重载复数流输入运算符
istream &operator>>(istream &input,complex &comp)
{
int sign=0;
cin>>comp.real>>comp.imaginary;
input.ignore();
if(sign=='-') comp.imaginary=-comp.imaginary;
return input;
}
//
// main 函数
//
#include "iostream.h"
int main(int argc, char* argv[])
{
complex comp1,comp2;
// 输入两个复数 ,以 a+bi 的形式
cout<<"\nPlease input the two complex (input type: a+bi Or a-bi):\n\n"<<"First: ";
cin>>comp1;
cout<<"\nSecond: ";
cin>>comp2;
complex sum,minus,mult,div;// 声明复数 和,差,积,商
sum=comp1+comp2; //复数加法"+"
minus=comp1-comp2; //复数减法"-"
mult=comp1*comp2; //复数乘法"*"
div=comp1/comp2; //复数乘法"*"
cout<<"\n和为 :"<<sum<<"\n"
<<"差为 :"<<minus<<"\n"
<<"积为 :"<<mult<<"\n"
<<"商为 :"<<div<<"\n";
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -