//complex0.h
#ifndef COMPLEX0_H
#define COMPLEX0_H
#include<iostream>
namespace COMPLEX{
class complex{
private:
double x;
double y;
public:
complex();
complex(double a,double b){ x = a;y=b;};
complex operator+(complex &com);
complex operator-(complex &com);
complex operator*(complex &com);
complex operator*(double n);
complex operator~();
friend complex operator*(double n ,complex &com);
friend std:: istream & operator>>(std::istream &os,complex &com);
friend std::ostream & operator<<(std::ostream &os,complex &com);
};
}
#endif
//complex.cpp
#include"complex0.h"
namespace COMPLEX{
complex::complex()
{
x = y =0;
}
complex complex::operator+(complex &com)
{
double x1,y1;
x1=x+com.x;
y1=y+com.y;
return complex(x1,y1);
}
complex complex:: operator-(complex &com)
{
double x1,y1;
x1 = x-com.x;
y1= y-com.y;
return complex(x1,y1);
}
complex complex::operator*(complex &com)
{
double x1,y1;
x1 = x*com.x-y*com.y;
y1 = com.x*y+x*com.y;
return complex(x1,y1);
}
complex complex:: operator*(double n)
{
return complex(x*n,y*n);
}
complex operator*(double n ,complex &com)
{
return com*n;
}
complex complex::operator~()
{
return complex(x,-y);
}
std:: istream & operator>>(std::istream &os,complex &com)
{
double n,m;
std::cout<<"enter x: ";
os>>n;
std::cout<<"enter y: ";
os>>m;
com.x=n;
com.y =m;
return os;
}
std::ostream & operator<<(std::ostream &os,complex &com)
{
os<<"("<<com.x<<","<<com.y<<"i)"<<std::endl;
return os;
}
}
//main.cpp
#include"complex0.h"
int main()
{
using COMPLEX::complex;
using std::cin;
using std::cout;
using std::endl;
complex a(3.0,4.0);
complex c;
cout<<"enter a complex number (q to quit):\n";
while(cin>>c)
{
cout<<"c is"<<c<<"\n";
cout<<"complex conjugate is"<<~c<<'\n';
cout<<"a is"<<a<<'\n';
cout<<"~a is"<<~a<<endl;
cout<<"a+c is"<<a+c<<endl;
cout<<"c-c is"<<a-c<<endl;
cout<<"a*c is"<<a*c<<endl;
cout<<"2*c is"<<2*c<<endl;
cout<<"enter a complex number (q to quit):"<<endl;
}
cout<<"done";
system("pause");
return 0;
}