#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;
}
// 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 function
void display() const {
cout << real;
if (imag >= 0)
cout << " + " << imag << "i" << endl;
else
cout << " - " << -imag << "i" << endl;
}
};
int main() {
Complex c1(3.0, 2.0); // First complex number: 3 + 2i
Complex c2(1.5, 4.5); // Second complex number: 1.5 + 4.5i
Complex sum = c1 + c2;
Complex diff = c1 - c2;
Complex prod = c1 * c2;
cout << "First Complex Number: ";
c1.display();
cout << "Second Complex Number: ";
c2.display();
cout << "\nSum: ";
sum.display();
cout << "Difference: ";
diff.display();
cout << "Product: ";
prod.display();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ29tcGxleCB7CnByaXZhdGU6CiAgICBmbG9hdCByZWFsOwogICAgZmxvYXQgaW1hZzsKCnB1YmxpYzoKICAgIC8vIENvbnN0cnVjdG9yCiAgICBDb21wbGV4KGZsb2F0IHIgPSAwLCBmbG9hdCBpID0gMCkgewogICAgICAgIHJlYWwgPSByOwogICAgICAgIGltYWcgPSBpOwogICAgfQoKICAgIC8vIE92ZXJsb2FkICsKICAgIENvbXBsZXggb3BlcmF0b3IgKyAoY29uc3QgQ29tcGxleCYgYykgY29uc3QgewogICAgICAgIHJldHVybiBDb21wbGV4KHJlYWwgKyBjLnJlYWwsIGltYWcgKyBjLmltYWcpOwogICAgfQoKICAgIC8vIE92ZXJsb2FkIC0KICAgIENvbXBsZXggb3BlcmF0b3IgLSAoY29uc3QgQ29tcGxleCYgYykgY29uc3QgewogICAgICAgIHJldHVybiBDb21wbGV4KHJlYWwgLSBjLnJlYWwsIGltYWcgLSBjLmltYWcpOwogICAgfQoKICAgIC8vIE92ZXJsb2FkICoKICAgIENvbXBsZXggb3BlcmF0b3IgKiAoY29uc3QgQ29tcGxleCYgYykgY29uc3QgewogICAgICAgIGZsb2F0IHIgPSAocmVhbCAqIGMucmVhbCkgLSAoaW1hZyAqIGMuaW1hZyk7CiAgICAgICAgZmxvYXQgaSA9IChyZWFsICogYy5pbWFnKSArIChpbWFnICogYy5yZWFsKTsKICAgICAgICByZXR1cm4gQ29tcGxleChyLCBpKTsKICAgIH0KCiAgICAvLyBEaXNwbGF5IGZ1bmN0aW9uCiAgICB2b2lkIGRpc3BsYXkoKSBjb25zdCB7CiAgICAgICAgY291dCA8PCByZWFsOwogICAgICAgIGlmIChpbWFnID49IDApCiAgICAgICAgICAgIGNvdXQgPDwgIiArICIgPDwgaW1hZyA8PCAiaSIgPDwgZW5kbDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQgPDwgIiAtICIgPDwgLWltYWcgPDwgImkiIDw8IGVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIENvbXBsZXggYzEoMy4wLCAyLjApOyAgLy8gRmlyc3QgY29tcGxleCBudW1iZXI6IDMgKyAyaQogICAgQ29tcGxleCBjMigxLjUsIDQuNSk7ICAvLyBTZWNvbmQgY29tcGxleCBudW1iZXI6IDEuNSArIDQuNWkKCiAgICBDb21wbGV4IHN1bSA9IGMxICsgYzI7CiAgICBDb21wbGV4IGRpZmYgPSBjMSAtIGMyOwogICAgQ29tcGxleCBwcm9kID0gYzEgKiBjMjsKCiAgICBjb3V0IDw8ICJGaXJzdCBDb21wbGV4IE51bWJlcjogIjsKICAgIGMxLmRpc3BsYXkoKTsKCiAgICBjb3V0IDw8ICJTZWNvbmQgQ29tcGxleCBOdW1iZXI6ICI7CiAgICBjMi5kaXNwbGF5KCk7CgogICAgY291dCA8PCAiXG5TdW06ICI7CiAgICBzdW0uZGlzcGxheSgpOwoKICAgIGNvdXQgPDwgIkRpZmZlcmVuY2U6ICI7CiAgICBkaWZmLmRpc3BsYXkoKTsKCiAgICBjb3V0IDw8ICJQcm9kdWN0OiAiOwogICAgcHJvZC5kaXNwbGF5KCk7CgogICAgcmV0dXJuIDA7Cn0K