复数四则及比较运算
#include <iostream.h>
#include <cmath>
class complex
{public:
friend istream & operator >> (istream & ,complex &); //提取运算符重载友元函数声明。
friend ostream & operator << (ostream &,complex &); //插入运算符重载友元函数声明。
complex operator + (complex &); //运算符“+”重载函数声明。
complex operator - (complex &); //运算符“-”重载函数声明。
complex operator * (complex &); //运算符“*”重载函数声明。
complex operator / (complex &); //运算符“/”重载函数声明。
void bijiao(complex &,complex &); // 比较函数bijiao声明。
private:
double a; //定义双精度型私有数据成员a 变量。
double b; //定义双精度型私有数据成员a 变量。
};
complex complex::operator + (complex &t) //类外定义运算符“+”重载函数。
{ //复数相加实现过程。
t.a=a+t.a;
t.b=b+t.b;
return t;
}
complex complex::operator - (complex &t) //类外定义运算符“-”重载函数。
{ //复数相减实现过程。
t.a=a-t.a;
t.b=b-t.b;
return t;
}
complex complex::operator * (complex &t) //类外定义运算符“*”重载函数。
{ //复数相乘实现过程。
double s;
s=a*t.b+t.a*b;
t.a=a*t.a-b*t.b;
t.b=s;
return t;
}
complex complex::operator / (complex &t) //类外定义运算符“/”重载函数。
{ //复数相除实现过程。
double s,v;
v=-a*t.b+b*t.a;
s=t.a*t.a+t.b*t.b;
t.a=(a*t.a+b*t.b)/s;
t.b=v;
return t;
}
void complex::bijiao(complex &z1,complex &z2) //类外定义bijiao函数。
{ //复数比较实现过程。
double d1,d2;
d1=pow(z1.a*z1.a+z1.b*z1.b,0.5);
d2=pow(z2.a*z2.a+z2.b*z2.b,0.5);
if(d1>d2) cout<<"|z1|>|z2|"<<endl;
if(d1<d2) cout<<"|z1|<|z2|"<<endl;
if(d1==d2) cout<<"|z1|=|z2|"<<endl;
}
istream & operator >> (istream &input ,complex &t) //定义提取运算符重载函数。
{ //输入对象实现过程。
input>>t.a>>t.b;
return input;
}
ostream & operator << (ostream &output ,complex &t)
{ //输出对象实现过程。
if(t.b<0) output<<t.a<<t.b<<"i"<<endl;
if(t.b>=0) output<<t.a<<"+"<<t.b<<"i"<<endl;
return output;
}
int main() //定义主函数。
{
complex z1,z2,z3; //定义complex类的z1,z2,z3对象。
char str;
cout<<"计算两个复数的四则运算及比较运算:Z1=a+bi,Z2=c+di;"<<endl;
cout<<"请输入: (a)_(b)_(运算符)_(c)_(d);()里写数字。"<<endl;
cout<<"“运算符”包括“+,-,*,/,?”,“_”为空格。"<<endl;
while(cin>>z1>>str>>z2)
{
if(str=='+') {z3=z1+z2;cout<<"z1+z2="<<z3;}
if(str=='-') {z3=z1-z2;cout<<"z1-z2="<<z3;}
if(str=='*') {z3=z1*z2;cout<<"z1*z2="<<z3;}
if(str=='/') {z3=z1/z2;cout<<"z1/z2="<<z3;}
if(str=='?') z3.bijiao(z1,z2);
}
return 0;
}