// Complex numbers are entered by the user
#include <iostream>
using namespace std;
typedef struct complex {
float real;
float imag;
} complexNumber;
complexNumber addComplexNumbers( complex, complex) ;
int main( ) {
complexNumber num1, num2, complexSum;
char signOfImag;
cout << "For 1st complex number," << endl;
cout << "Enter real and imaginary parts respectively:" << endl;
cin >> num1.real >> num1.imag ;
cout << endl
<< "For 2nd complex number," << endl;
cout << "Enter real and imaginary parts respectively:" << endl;
cin >> num2.real >> num2.imag ;
// Call add function and store result in complexSum
complexSum = addComplexNumbers( num1, num2) ;
// Use Ternary Operator to check the sign of the imaginary number
signOfImag = ( complexSum.imag > 0 ) ? '+' : '-' ;
// Use Ternary Operator to adjust the sign of the imaginary number
complexSum.imag = ( complexSum.imag > 0 ) ? complexSum.imag : - complexSum.imag ;
cout << "Sum = " << complexSum.real << signOfImag << complexSum.imag << "i" ;
return 0 ;
}
complexNumber addComplexNumbers( complex num1, complex num2) {
complex temp;
temp.real = num1.real + num2.real ;
temp.imag = num1.imag + num2.imag ;
return ( temp) ;
}
Ly8gQ29tcGxleCBudW1iZXJzIGFyZSBlbnRlcmVkIGJ5IHRoZSB1c2VyCgojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHN0cnVjdCBjb21wbGV4IHsKICAgIGZsb2F0IHJlYWw7CiAgICBmbG9hdCBpbWFnOwp9IGNvbXBsZXhOdW1iZXI7Cgpjb21wbGV4TnVtYmVyIGFkZENvbXBsZXhOdW1iZXJzKGNvbXBsZXgsIGNvbXBsZXgpOwoKaW50IG1haW4oKSB7CiAgICBjb21wbGV4TnVtYmVyIG51bTEsIG51bTIsIGNvbXBsZXhTdW07CiAgICBjaGFyIHNpZ25PZkltYWc7CgogICAgY291dCA8PCAiRm9yIDFzdCBjb21wbGV4IG51bWJlciwiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJFbnRlciByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgcmVzcGVjdGl2ZWx5OiIgPDwgZW5kbDsKICAgIGNpbiA+PiBudW0xLnJlYWwgPj4gbnVtMS5pbWFnOwoKICAgIGNvdXQgPDwgZW5kbAogICAgICAgICA8PCAiRm9yIDJuZCBjb21wbGV4IG51bWJlciwiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJFbnRlciByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgcmVzcGVjdGl2ZWx5OiIgPDwgZW5kbDsKICAgIGNpbiA+PiBudW0yLnJlYWwgPj4gbnVtMi5pbWFnOwoKICAgIC8vIENhbGwgYWRkIGZ1bmN0aW9uIGFuZCBzdG9yZSByZXN1bHQgaW4gY29tcGxleFN1bQogICAgY29tcGxleFN1bSA9IGFkZENvbXBsZXhOdW1iZXJzKG51bTEsIG51bTIpOwoKICAgIC8vIFVzZSBUZXJuYXJ5IE9wZXJhdG9yIHRvIGNoZWNrIHRoZSBzaWduIG9mIHRoZSBpbWFnaW5hcnkgbnVtYmVyCiAgICBzaWduT2ZJbWFnID0gKGNvbXBsZXhTdW0uaW1hZyA+IDApID8gJysnIDogJy0nOwoKICAgIC8vIFVzZSBUZXJuYXJ5IE9wZXJhdG9yIHRvIGFkanVzdCB0aGUgc2lnbiBvZiB0aGUgaW1hZ2luYXJ5IG51bWJlcgogICAgY29tcGxleFN1bS5pbWFnID0gKGNvbXBsZXhTdW0uaW1hZyA+IDApID8gY29tcGxleFN1bS5pbWFnIDogLWNvbXBsZXhTdW0uaW1hZzsKCiAgICBjb3V0IDw8ICJTdW0gPSAiIDw8IGNvbXBsZXhTdW0ucmVhbCA8PCBzaWduT2ZJbWFnIDw8IGNvbXBsZXhTdW0uaW1hZyA8PCAiaSI7CgogICAgcmV0dXJuIDA7Cn0KCmNvbXBsZXhOdW1iZXIgYWRkQ29tcGxleE51bWJlcnMoY29tcGxleCBudW0xLCBjb21wbGV4IG51bTIpIHsKICAgIGNvbXBsZXggdGVtcDsKICAgIHRlbXAucmVhbCA9IG51bTEucmVhbCArIG51bTIucmVhbDsKICAgIHRlbXAuaW1hZyA9IG51bTEuaW1hZyArIG51bTIuaW1hZzsKICAgIHJldHVybiAodGVtcCk7Cn0K