#include <iostream>
#include <cmath>
using namespace std;
class Complex {
private :
float real;
float imaginary;
public :
void set_values( float a, float b) {
real = a;
imaginary = b;
}
// Single get() function using reference parameters
void get( float & r, float & i) {
r = real;
i = imaginary;
}
void display( ) {
if ( imaginary < 0 ) {
cout << real << "-" << abs ( imaginary) << "i" << endl;
} else {
cout << real << "+" << imaginary << "i" << endl;
}
}
} ;
class calculation {
public :
Complex sum( Complex a, Complex b) {
Complex S;
float x1, y1, x2, y2;
a.get ( x1, y1) ;
b.get ( x2, y2) ;
float x = x1 + x2;
float y = y1 + y2;
S.set_values ( x, y) ;
return S;
}
Complex difference( Complex a, Complex b) {
Complex D;
float x1, y1, x2, y2;
a.get ( x1, y1) ;
b.get ( x2, y2) ;
float x = x1 - x2;
float y = y1 - y2;
D.set_values ( x, y) ;
return D;
}
} ;
int main( ) {
float a, b;
cout << "Enter real and imaginary parts of first complex number: " ;
cin >> a >> b;
Complex A, B, sum, diff;
A.set_values ( a, b) ;
cout << "Enter real and imaginary parts of second complex number: " ;
cin >> a >> b;
B.set_values ( a, b) ;
calculation calc;
sum = calc.sum ( A, B) ;
diff = calc.difference ( A, B) ;
cout << "\n Sum = " ;
sum.display ( ) ;
cout << "Difference = " ;
diff.display ( ) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBDb21wbGV4IHsKcHJpdmF0ZToKICAgIGZsb2F0IHJlYWw7CiAgICBmbG9hdCBpbWFnaW5hcnk7CgpwdWJsaWM6CiAgICB2b2lkIHNldF92YWx1ZXMoZmxvYXQgYSwgZmxvYXQgYikgewogICAgICAgIHJlYWwgPSBhOwogICAgICAgIGltYWdpbmFyeSA9IGI7CiAgICB9CgogICAgLy8gU2luZ2xlIGdldCgpIGZ1bmN0aW9uIHVzaW5nIHJlZmVyZW5jZSBwYXJhbWV0ZXJzCiAgICB2b2lkIGdldChmbG9hdCAmciwgZmxvYXQgJmkpIHsKICAgICAgICByID0gcmVhbDsKICAgICAgICBpID0gaW1hZ2luYXJ5OwogICAgfQoKICAgIHZvaWQgZGlzcGxheSgpIHsKICAgICAgICBpZiAoaW1hZ2luYXJ5IDwgMCkgewogICAgICAgICAgICBjb3V0IDw8IHJlYWwgPDwgIi0iIDw8IGFicyhpbWFnaW5hcnkpIDw8ICJpIiA8PCBlbmRsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvdXQgPDwgcmVhbCA8PCAiKyIgPDwgaW1hZ2luYXJ5IDw8ICJpIiA8PCBlbmRsOwogICAgICAgIH0KICAgIH0KfTsKCmNsYXNzIGNhbGN1bGF0aW9uIHsKcHVibGljOgogICAgQ29tcGxleCBzdW0oQ29tcGxleCBhLCBDb21wbGV4IGIpIHsKICAgICAgICBDb21wbGV4IFM7CiAgICAgICAgZmxvYXQgeDEsIHkxLCB4MiwgeTI7CiAgICAgICAgYS5nZXQoeDEsIHkxKTsKICAgICAgICBiLmdldCh4MiwgeTIpOwoKICAgICAgICBmbG9hdCB4ID0geDEgKyB4MjsKICAgICAgICBmbG9hdCB5ID0geTEgKyB5MjsKICAgICAgICBTLnNldF92YWx1ZXMoeCwgeSk7CiAgICAgICAgcmV0dXJuIFM7CiAgICB9CgogICAgQ29tcGxleCBkaWZmZXJlbmNlKENvbXBsZXggYSwgQ29tcGxleCBiKSB7CiAgICAgICAgQ29tcGxleCBEOwogICAgICAgIGZsb2F0IHgxLCB5MSwgeDIsIHkyOwogICAgICAgIGEuZ2V0KHgxLCB5MSk7CiAgICAgICAgYi5nZXQoeDIsIHkyKTsKCiAgICAgICAgZmxvYXQgeCA9IHgxIC0geDI7CiAgICAgICAgZmxvYXQgeSA9IHkxIC0geTI7CiAgICAgICAgRC5zZXRfdmFsdWVzKHgsIHkpOwogICAgICAgIHJldHVybiBEOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBmbG9hdCBhLCBiOwoKICAgIGNvdXQgPDwgIkVudGVyIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBmaXJzdCBjb21wbGV4IG51bWJlcjogIjsKICAgIGNpbiA+PiBhID4+IGI7CiAgICBDb21wbGV4IEEsIEIsIHN1bSwgZGlmZjsKICAgIEEuc2V0X3ZhbHVlcyhhLCBiKTsKCiAgICBjb3V0IDw8ICJFbnRlciByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2Ygc2Vjb25kIGNvbXBsZXggbnVtYmVyOiAiOwogICAgY2luID4+IGEgPj4gYjsKICAgIEIuc2V0X3ZhbHVlcyhhLCBiKTsKCiAgICBjYWxjdWxhdGlvbiBjYWxjOwogICAgc3VtID0gY2FsYy5zdW0oQSwgQik7CiAgICBkaWZmID0gY2FsYy5kaWZmZXJlbmNlKEEsIEIpOwoKICAgIGNvdXQgPDwgIlxuU3VtID0gIjsKICAgIHN1bS5kaXNwbGF5KCk7CiAgICBjb3V0IDw8ICJEaWZmZXJlbmNlID0gIjsKICAgIGRpZmYuZGlzcGxheSgpOwoKICAgIHJldHVybiAwOwp9Cg==