#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
class Complex_Number{
private:
float real_part;
float virtual_part;
public:
Complex_Number(float _real_part=0,float _virtual_part=0){
this->real_part=_real_part;
this->virtual_part=_virtual_part;
}
~Complex_Number(){
real_part=virtual_part=0;
}
float Get_real_part();
float Get_virtual_part();
float Module();
friend istream &operator>>(istream &in,Complex_Number &cpn);
friend ostream &operator<<(ostream &out,Complex_Number &cpn);
friend Complex_Number operator+(const Complex_Number &a,const Complex_Number &b);
friend Complex_Number operator-(const Complex_Number &a,const Complex_Number &b);
friend Complex_Number operator*(const Complex_Number &a,const Complex_Number &b);
friend Complex_Number operator/(const Complex_Number &a,const Complex_Number &b);
//compare by module
friend Complex_Number operator>(const Complex_Number &a,const Complex_Number &b);
friend Complex_Number operator<(const Complex_Number &a,const Complex_Number &b);
// friend Complex_Number operator=();
};
float Complex_Number::Get_real_part(){
return this->real_part;
}
float Complex_Number::Get_virtual_part(){
return this->virtual_part;
}
float Complex_Number::Module(){
return sqrt( pow(real_part,2) + pow(virtual_part,2) );
}
istream &operator>>(istream &in,Complex_Number &cpn){
cout<<"Enter real part: ";
in>>cpn.real_part;
cout<<"Enter virtual part: ";
in>>cpn.virtual_part;
return in;
}
ostream &operator<<(ostream &out,Complex_Number &cpn){
out<<cpn.real_part<<" + "<<cpn.virtual_part<<"i";
return out;
}
Complex_Number operator+(const Complex_Number &a,const Complex_Number &b){
Complex_Number c;
c.real_part = a.real_part + b.real_part;
c.virtual_part = a.virtual_part + b.virtual_part;
return c;
}
Complex_Number operator-(const Complex_Number &a,const Complex_Number &b){
Complex_Number c;
c.real_part = a.real_part - b.real_part;
c.virtual_part = a.virtual_part - b.virtual_part;
return c;
}
Complex_Number operator*(const Complex_Number &a,const Complex_Number &b){
Complex_Number c;
c.real_part = (a.real_part * b.real_part) - (a.virtual_part * b.virtual_part);
c.virtual_part = (a.real_part * b.virtual_part) + (a.virtual_part * b.real_part);
return c;
}
Complex_Number operator/(const Complex_Number &a,const Complex_Number &b){
Complex_Number c;
c.real_part=( (a.real_part * b.real_part) + (a.virtual_part * b.virtual_part) ) / b.Module();
c.virtual_part=( (a.virtual_part * b.real_part) - (a.real_part * b.virtual_part) ) / b.Module();
return c;
}
Complex_Number operator>(Complex_Number &a,Complex_Number &b){
Complex_Number c;
if(a.Module() > b.Module())
return true;
else
return false;
}
int main(){
setprecision(2);
}