#include <iostream>
using namespace std;
class Complex
{
private:
float real;
float imag;
public:
Complex():
real(0), imag(0){ }
void input()
{
cout << "Enter real and imaginary parts respectively: "<<endl;
cin >> real;
cin >> imag;
}
// Operator overloading
Complex operator + (Complex c)
{
Complex temp;
temp.real = real + c.real;
temp.imag = imag + c.imag;
return temp;
}
Complex operator - (Complex c)
{
Complex temp;
temp.real=real-c.real;
temp.imag=imag-c.imag;
return temp;
}
void output()
{
if(imag < 0)
cout << "Output Complex number: "<< real << imag << "i"<<endl;
else
cout << "Output Complex number: " << real << "+" << imag << "i"<<endl;
}
};
int main()
{
Complex c1, c2, result,resultt;
c1.input();
c2.input();
// In case of operator overloading of binary operators in C++ programming,
// the object on right hand side of operator is always assumed as argument by compiler.
result = c1 + c2;
result.output();
resultt = c1 - c2;
resultt.output();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ29tcGxleAp7CiAgICBwcml2YXRlOgogICAgICBmbG9hdCByZWFsOwogICAgICBmbG9hdCBpbWFnOwogICAgcHVibGljOgogICAgICAgQ29tcGxleCgpOiAKICAgIAlyZWFsKDApLCBpbWFnKDApeyB9CiAgICAgICB2b2lkIGlucHV0KCkKICAgICAgIHsKICAgICAgICAgICBjb3V0IDw8ICJFbnRlciByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgcmVzcGVjdGl2ZWx5OiAiPDxlbmRsOwogICAgICAgICAgIGNpbiA+PiByZWFsOwogICAgICAgICAgIGNpbiA+PiBpbWFnOwogICAgICAgfQoKICAgICAgIC8vIE9wZXJhdG9yIG92ZXJsb2FkaW5nCiAgICAgICBDb21wbGV4IG9wZXJhdG9yICsgKENvbXBsZXggYykKICAgICAgIHsKICAgICAgICAgICBDb21wbGV4IHRlbXA7CiAgICAgICAgICAgdGVtcC5yZWFsID0gcmVhbCArIGMucmVhbDsKICAgICAgICAgICB0ZW1wLmltYWcgPSBpbWFnICsgYy5pbWFnOwoKICAgICAgICAgICByZXR1cm4gdGVtcDsKICAgICAgIH0KICAgICAgIAogICAgICAgQ29tcGxleCBvcGVyYXRvciAtIChDb21wbGV4IGMpCiAgICAgICB7CiAgICAgICAJQ29tcGxleCB0ZW1wOwogICAgICAgCXRlbXAucmVhbD1yZWFsLWMucmVhbDsKICAgICAgIAl0ZW1wLmltYWc9aW1hZy1jLmltYWc7CiAgICAgICAJCiAgICAgICAJcmV0dXJuIHRlbXA7CiAgICAgICB9CgogICAgICAgdm9pZCBvdXRwdXQoKQogICAgICAgewogICAgICAgICAgIGlmKGltYWcgPCAwKQogICAgICAgICAgICAgICBjb3V0IDw8ICJPdXRwdXQgQ29tcGxleCBudW1iZXI6ICI8PCByZWFsIDw8IGltYWcgPDwgImkiPDxlbmRsOwogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgY291dCA8PCAiT3V0cHV0IENvbXBsZXggbnVtYmVyOiAiIDw8IHJlYWwgPDwgIisiIDw8IGltYWcgPDwgImkiPDxlbmRsOwogICAgICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBDb21wbGV4IGMxLCBjMiwgcmVzdWx0LHJlc3VsdHQ7CiAgICBjMS5pbnB1dCgpOwogICAgYzIuaW5wdXQoKTsKCiAgICAvLyBJbiBjYXNlIG9mIG9wZXJhdG9yIG92ZXJsb2FkaW5nIG9mIGJpbmFyeSBvcGVyYXRvcnMgaW4gQysrIHByb2dyYW1taW5nLCAKICAgIC8vIHRoZSBvYmplY3Qgb24gcmlnaHQgaGFuZCBzaWRlIG9mIG9wZXJhdG9yIGlzIGFsd2F5cyBhc3N1bWVkIGFzIGFyZ3VtZW50IGJ5IGNvbXBpbGVyLgogICAgcmVzdWx0ID0gYzEgKyBjMjsKICAgIHJlc3VsdC5vdXRwdXQoKTsKICAgIHJlc3VsdHQgPSBjMSAtIGMyOwogICAgcmVzdWx0dC5vdXRwdXQoKTsKICAgIHJldHVybiAwOwp9