/* create a complex class with private members for the real and imaginary parts
overload the +,-,and * operators to perform addition ,subtraction and multiplication
of complex numbers. test the overloaded operators by creating two complex objects and
performing arithmetic operations on them*/
#include <iostream>
using namespace std;
class Complex {
private :
float real;
float imag;
public :
// Constructor
Complex( float r = 0 , float i = 0 ) {
real = r;
imag = i;
}
// Input method
void input( ) {
cout << "Enter real part: " ;
cin >> real;
cout << "Enter imaginary part: " ;
cin >> imag;
}
// Overload +
Complex operator + ( const Complex& c) const {
return Complex( real + c.real , imag + c.imag ) ;
}
// Overload -
Complex operator - ( const Complex& c) const {
return Complex( real - c.real , imag - c.imag ) ;
}
// Overload *
Complex operator * ( const Complex& c) const {
float r = ( real * c.real ) - ( imag * c.imag ) ;
float i = ( real * c.imag ) + ( imag * c.real ) ;
return Complex( r, i) ;
}
// Display method
void display( ) const {
cout << real;
if ( imag >= 0 )
cout << " + " << imag << "i" << endl;
else
cout << " - " << - imag << "i" << endl;
}
} ;
int main( ) {
Complex c1, c2;
cout << "Enter first complex number:\n " ;
c1.input ( ) ;
cout << "\n Enter second complex number:\n " ;
c2.input ( ) ;
Complex sum = c1 + c2;
Complex diff = c1 - c2;
Complex prod = c1 * c2;
cout << "\n First Complex Number: " ;
c1.display ( ) ;
cout << "Second Complex Number: " ;
c2.display ( ) ;
cout << "\n Sum: " ;
sum.display ( ) ;
cout << "Difference: " ;
diff.display ( ) ;
cout << "Product: " ;
prod.display ( ) ;
return 0 ;
}
LyogY3JlYXRlIGEgY29tcGxleCBjbGFzcyB3aXRoIHByaXZhdGUgbWVtYmVycyBmb3IgdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cwpvdmVybG9hZCB0aGUgKywtLGFuZCAqIG9wZXJhdG9ycyB0byBwZXJmb3JtIGFkZGl0aW9uICxzdWJ0cmFjdGlvbiBhbmQgbXVsdGlwbGljYXRpb24Kb2YgY29tcGxleCBudW1iZXJzLiB0ZXN0IHRoZSBvdmVybG9hZGVkIG9wZXJhdG9ycyBieSBjcmVhdGluZyB0d28gY29tcGxleCBvYmplY3RzIGFuZApwZXJmb3JtaW5nIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvbiB0aGVtKi8KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ29tcGxleCB7CnByaXZhdGU6CiAgICBmbG9hdCByZWFsOwogICAgZmxvYXQgaW1hZzsKCnB1YmxpYzoKICAgIC8vIENvbnN0cnVjdG9yCiAgICBDb21wbGV4KGZsb2F0IHIgPSAwLCBmbG9hdCBpID0gMCkgewogICAgICAgIHJlYWwgPSByOwogICAgICAgIGltYWcgPSBpOwogICAgfQoKICAgIC8vIElucHV0IG1ldGhvZAogICAgdm9pZCBpbnB1dCgpIHsKICAgICAgICBjb3V0IDw8ICJFbnRlciByZWFsIHBhcnQ6ICI7CiAgICAgICAgY2luID4+IHJlYWw7CiAgICAgICAgY291dCA8PCAiRW50ZXIgaW1hZ2luYXJ5IHBhcnQ6ICI7CiAgICAgICAgY2luID4+IGltYWc7CiAgICB9CgogICAgLy8gT3ZlcmxvYWQgKwogICAgQ29tcGxleCBvcGVyYXRvciArIChjb25zdCBDb21wbGV4JiBjKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIENvbXBsZXgocmVhbCArIGMucmVhbCwgaW1hZyArIGMuaW1hZyk7CiAgICB9CgogICAgLy8gT3ZlcmxvYWQgLQogICAgQ29tcGxleCBvcGVyYXRvciAtIChjb25zdCBDb21wbGV4JiBjKSBjb25zdCB7CiAgICAgICAgcmV0dXJuIENvbXBsZXgocmVhbCAtIGMucmVhbCwgaW1hZyAtIGMuaW1hZyk7CiAgICB9CgogICAgLy8gT3ZlcmxvYWQgKgogICAgQ29tcGxleCBvcGVyYXRvciAqIChjb25zdCBDb21wbGV4JiBjKSBjb25zdCB7CiAgICAgICAgZmxvYXQgciA9IChyZWFsICogYy5yZWFsKSAtIChpbWFnICogYy5pbWFnKTsKICAgICAgICBmbG9hdCBpID0gKHJlYWwgKiBjLmltYWcpICsgKGltYWcgKiBjLnJlYWwpOwogICAgICAgIHJldHVybiBDb21wbGV4KHIsIGkpOwogICAgfQoKICAgIC8vIERpc3BsYXkgbWV0aG9kCiAgICB2b2lkIGRpc3BsYXkoKSBjb25zdCB7CiAgICAgICAgY291dCA8PCByZWFsOwogICAgICAgIGlmIChpbWFnID49IDApCiAgICAgICAgICAgIGNvdXQgPDwgIiArICIgPDwgaW1hZyA8PCAiaSIgPDwgZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQgPDwgIiAtICIgPDwgLWltYWcgPDwgImkiIDw8IGVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIENvbXBsZXggYzEsIGMyOwoKICAgIGNvdXQgPDwgIkVudGVyIGZpcnN0IGNvbXBsZXggbnVtYmVyOlxuIjsKICAgIGMxLmlucHV0KCk7CgogICAgY291dCA8PCAiXG5FbnRlciBzZWNvbmQgY29tcGxleCBudW1iZXI6XG4iOwogICAgYzIuaW5wdXQoKTsKCiAgICBDb21wbGV4IHN1bSA9IGMxICsgYzI7CiAgICBDb21wbGV4IGRpZmYgPSBjMSAtIGMyOwogICAgQ29tcGxleCBwcm9kID0gYzEgKiBjMjsKCiAgICBjb3V0IDw8ICJcbkZpcnN0IENvbXBsZXggTnVtYmVyOiAiOwogICAgYzEuZGlzcGxheSgpOwoKICAgIGNvdXQgPDwgIlNlY29uZCBDb21wbGV4IE51bWJlcjogIjsKICAgIGMyLmRpc3BsYXkoKTsKCiAgICBjb3V0IDw8ICJcblN1bTogIjsKICAgIHN1bS5kaXNwbGF5KCk7CgogICAgY291dCA8PCAiRGlmZmVyZW5jZTogIjsKICAgIGRpZmYuZGlzcGxheSgpOwoKICAgIGNvdXQgPDwgIlByb2R1Y3Q6ICI7CiAgICBwcm9kLmRpc3BsYXkoKTsKCiAgICByZXR1cm4gMDsKfQoKCg==