#include <iostream>
#include <cmath>
using namespace std;
template <class numtype>
class Comple
{
private:
numtype real;
numtype imag;
public:
Comple(){real = 0;imag = 0;}
Comple(numtype r,numtype i){real = r;imag = i;}
Comple add(Comple &c2) ;
Comple subtract(Comple &c2);
Comple multiply(Comple &c2);
Comple divide(Comple &c2);
void display() ;
};
template <class numtype>
Comple<numtype> Comple<numtype>::add(Comple &c2)
{
Comple c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
template <class numtype>
Comple<numtype> Comple<numtype>:: subtract(Comple &c2)
{
Comple c;
c.real=real-c2.real;
c.imag=imag-c2.imag;
return c;
}
template <class numtype>
Comple<numtype> Comple<numtype>:: multiply(Comple &c2)
{
Comple c;
c.real=real*c2.real;
c.imag=imag*c2.imag;
return c;
}
template <class numtype>
Comple<numtype> Comple<numtype>:: divide(Comple &c2)
{
Comple c;
c.real=real/c2.real;
c.imag=imag/c2.imag;
return c;
}
template <class numtype>
void Comple<numtype>::display()
{
cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main()
{ Comple<int> c1(3,4);
Comple<int>c2(5,-10);
Comple<int>c3;
c3=c1.add(c2);
cout<<"c1+c2=";
c3.display( );
c3=c1.subtract(c2);
cout<<"c1-c2=";
c3.display( );
c3=c1.multiply(c2);
cout<<"c1*c2=";
c3.display( );
c3=c1.divid(c2)
cout<<"c1/c2=";
c3.display( );
Comple<double> c4(3.1,4.4);
Comple<double>c5(5.34,-10.21);
Comple<double>c6;
c6=c4.add(c5);
cout<<"c4+c5=";
c6.display( );
system("pause");
return 0;
}