/* CAC PHEP TOAN CO BAN VOI SO PHUC
- Voi 2 so phuc X1=a1 + b1*i;
X2=a2 + b2*i;
Z=X1 +- X2=(a1 +- a2) + (b1 +- b2)*i;
Z=X1 * X2= (a1*a2 - b1*b2) + (a2*b1 - a1*b2)*i;
Z=X1 / X2= (a1*a2 + b1*b2)/(a2*a2 + b2*b2) + i*(a2*b1 - a1*b2)/(a2*a2 + b2*b2)
*/
#include <iostream>
#include <conio.h>
using namespace std;
class VIRTUAL_NUMBER
{
private:
float a,b;
public:
friend ostream& operator<< (ostream& os,const VIRTUAL_NUMBER &c);
friend istream& operator>> (istream& is,VIRTUAL_NUMBER &c);
friend VIRTUAL_NUMBER operator- (const VIRTUAL_NUMBER c)
{
VIRTUAL_NUMBER d;
d.a=-c.a;
d.b=-c.b;
return d;
}
friend VIRTUAL_NUMBER operator+ (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d);
friend VIRTUAL_NUMBER operator- (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d);
friend VIRTUAL_NUMBER operator* (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d);
friend VIRTUAL_NUMBER operator/ (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d);
};
ostream& operator<< (ostream& os,const VIRTUAL_NUMBER &c)
{
if (c.b>0)
os<<" -> So ao: "<<c.a<<"+"<<c.b<<"*i";
else os<<" -> So ao: "<<c.a<<c.b<<"*i";
return os;
}
istream& operator>> (istream& is,VIRTUAL_NUMBER &c)
{
is>>c.a;
is>>c.b;
return is;
}
VIRTUAL_NUMBER operator+ (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d)
{
VIRTUAL_NUMBER e;
e.a= c.a + d.a;
e.b= c.b + d.b;
return e;
}
VIRTUAL_NUMBER operator- (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d)
{
return (c + (-d));
}
VIRTUAL_NUMBER operator* (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d)
{
VIRTUAL_NUMBER e;
e.a= c.a*d.a - c.b*d.b;
e.b= d.a*c.b - c.a*d.b;
return e;
}
VIRTUAL_NUMBER operator/ (VIRTUAL_NUMBER c,VIRTUAL_NUMBER d)
{
VIRTUAL_NUMBER e;
e.a= (c.a*d.a + c.b*d.b)/(d.a*d.a+d.b*d.b);
e.b= (d.a*c.b - c.a*d.b)/(d.a*d.a+d.b*d.b);
return e;
}
int main()
{
VIRTUAL_NUMBER c,d;
cout<<" * So ao thu nhat: \n"; cout<<" * So ao thu hai: \n"; }