#include <iostream>
#include<cmath>
using namespace std;
class complex
{
static int obj;
double real;
double imag;
public:
void setReal(double r)
{
real=r;
}
void setImag(double r)
{
imag=r;
}
double getReal()
{
return real;
}
double getImag()
{
return imag;
}
void add(complex &a,complex &b)
{
real=a.real+b.real;
imag=a.imag+b.imag;
}
complex & maxComplex(complex &a,complex &b)
{
double mag1,mag2;
mag1=a.real*a.real+a.imag*a.imag;
mag2=b.real*b.real+b.imag*b.imag;
if(mag1>mag2)
return a;
else
return b;
}
complex()
{
real=59;
imag=69;
obj++;
}
complex(double r,double im)
{
real=r;
imag=im;
obj++;
}
complex(complex &c)
{
real=c.real;
imag=c.imag;
obj++;
}
static int getObj()
{
return obj;
}
complex operator +(complex &c);
complex(double r):real(r),imag(0.0){};
operator double();
};
int complex::obj=0;
complex complex::operator +(complex &c)
{
complex s;
s.real=real+c.real;
s.imag=imag+c.imag;
return s;
}
complex::operator double()
{
double r;
r=sqrt(real*real+imag*imag);
return r;
}
class polarcomplex
{
double r;
double theta;
public:
polarcomplex()
{
r=68;
theta=9;
}
double getR()
{
return r;
}
double getTheta()
{
return theta;
}
polarcomplex(complex &c)
{
r=sqrt(c.getReal()*c.getReal()+c.getImag()*c.getImag());
theta=atan(c.getImag()/c.getReal());
}
operator complex()
{
complex j;
j.setReal(r*cos(theta));
j.setImag(r*sin(theta));
return j;
}
};
int main()
{
double r,im;
double l;
complex c1,c2,c3,c4;
complex c6,c8,c9,c10;
polarcomplex p1;
cin>>r>>im;
c1.setReal(r);
c1.setImag(im);
cin>>r>>im;
c2.setImag(im);
c3.add(c1,c2);
c2.setReal(r);
complex &c5=c4.maxComplex(c1,c2);
cin>>r>>im;
complex c7(r,im);
c8=c7;
c9=c1 + c2;
cin>>r>>im;
c10.setReal(r);
c10.setImag(im);
c10=r;
l=c1;
p1=c1;
c1=p1;
cout<<"Sum is " << c3.getReal() << " + i" << c3.getImag() << "\n";
cout <<"Max is " << c5.getReal() << " + i" << c5.getImag()<<"\n";
cout << "Default constructor " << c6.getReal() << " + i" << c6.getImag()<<"\n";
cout<<"Paramat. constructor " << c7.getReal() << " + i" << c7.getImag() << "\n";
cout<<"copy constructor " << c8.getReal() << " + i" << c8.getImag() << "\n";
cout << "Objects are " << complex::getObj()<<"\n";
cout << "Operator + " << c9.getReal() << " + i" << c9.getImag()<<"\n";
cout << "Convertor " << c10.getReal() << " + i" << c10.getImag()<<"\n";
cout << "MAgnitude is " << l<<"\n";
cout << "Polar representation " << p1.getR() << " " << p1.getTheta()<<"\n";
cout <<"Rect representation " << c1.getReal() << " + i" << c1.getImag();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjbWF0aD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY2xhc3MgY29tcGxleAp7CglzdGF0aWMgaW50IG9iajsKCWRvdWJsZSByZWFsOwoJZG91YmxlIGltYWc7CglwdWJsaWM6Cgl2b2lkIHNldFJlYWwoZG91YmxlIHIpCgl7CgkJcmVhbD1yOwoJfQoJdm9pZCBzZXRJbWFnKGRvdWJsZSByKQoJewoJCWltYWc9cjsKCX0KCWRvdWJsZSBnZXRSZWFsKCkKCXsKCQlyZXR1cm4gcmVhbDsKCX0KCWRvdWJsZSBnZXRJbWFnKCkKCXsKCQlyZXR1cm4gaW1hZzsKCX0KCXZvaWQgYWRkKGNvbXBsZXggJmEsY29tcGxleCAmYikKCXsKCQlyZWFsPWEucmVhbCtiLnJlYWw7CgkJaW1hZz1hLmltYWcrYi5pbWFnOwoJfQoJY29tcGxleCAmIG1heENvbXBsZXgoY29tcGxleCAmYSxjb21wbGV4ICZiKQoJewoJCWRvdWJsZSBtYWcxLG1hZzI7CgkJbWFnMT1hLnJlYWwqYS5yZWFsK2EuaW1hZyphLmltYWc7CgkJbWFnMj1iLnJlYWwqYi5yZWFsK2IuaW1hZypiLmltYWc7CgkJaWYobWFnMT5tYWcyKQoJCXJldHVybiBhOwoJCWVsc2UKCQlyZXR1cm4gYjsKCX0KCWNvbXBsZXgoKQoJewoJCXJlYWw9NTk7CgkJaW1hZz02OTsKCQlvYmorKzsKCX0KCWNvbXBsZXgoZG91YmxlIHIsZG91YmxlIGltKQoJewoJCXJlYWw9cjsKCQlpbWFnPWltOwoJCW9iaisrOwoJfQoJY29tcGxleChjb21wbGV4ICZjKQoJewoJCXJlYWw9Yy5yZWFsOwoJCWltYWc9Yy5pbWFnOwoJCW9iaisrOwoJfQoJc3RhdGljIGludCBnZXRPYmooKQoJewoJCXJldHVybiBvYmo7Cgl9Cgljb21wbGV4IG9wZXJhdG9yICsoY29tcGxleCAmYyk7Cgljb21wbGV4KGRvdWJsZSByKTpyZWFsKHIpLGltYWcoMC4wKXt9OwoJb3BlcmF0b3IgZG91YmxlKCk7Cn07CmludCBjb21wbGV4OjpvYmo9MDsKY29tcGxleCBjb21wbGV4OjpvcGVyYXRvciArKGNvbXBsZXggJmMpCnsKCWNvbXBsZXggczsKCXMucmVhbD1yZWFsK2MucmVhbDsKCXMuaW1hZz1pbWFnK2MuaW1hZzsKCXJldHVybiBzOwp9CmNvbXBsZXg6Om9wZXJhdG9yIGRvdWJsZSgpCnsKCWRvdWJsZSByOwoJcj1zcXJ0KHJlYWwqcmVhbCtpbWFnKmltYWcpOwoJcmV0dXJuIHI7Cn0KCmNsYXNzIHBvbGFyY29tcGxleAp7Cglkb3VibGUgcjsKCWRvdWJsZSB0aGV0YTsKCXB1YmxpYzoKCXBvbGFyY29tcGxleCgpCgl7CgkJcj02ODsKCQl0aGV0YT05OwoJfQoJZG91YmxlIGdldFIoKQoJewoJCXJldHVybiByOwoJfQoJZG91YmxlIGdldFRoZXRhKCkKCXsKCQlyZXR1cm4gdGhldGE7Cgl9Cglwb2xhcmNvbXBsZXgoY29tcGxleCAmYykKCXsKCQlyPXNxcnQoYy5nZXRSZWFsKCkqYy5nZXRSZWFsKCkrYy5nZXRJbWFnKCkqYy5nZXRJbWFnKCkpOwoJCXRoZXRhPWF0YW4oYy5nZXRJbWFnKCkvYy5nZXRSZWFsKCkpOwoJfQoJb3BlcmF0b3IgY29tcGxleCgpCgl7Cgljb21wbGV4IGo7CglqLnNldFJlYWwocipjb3ModGhldGEpKTsKCWouc2V0SW1hZyhyKnNpbih0aGV0YSkpOwoJcmV0dXJuIGo7Cgl9Cn07CmludCBtYWluKCkgCnsKCWRvdWJsZSByLGltOwoJZG91YmxlIGw7Cgljb21wbGV4IGMxLGMyLGMzLGM0OwoJY29tcGxleCBjNixjOCxjOSxjMTA7Cglwb2xhcmNvbXBsZXggcDE7CgljaW4+PnI+PmltOwoJYzEuc2V0UmVhbChyKTsKCWMxLnNldEltYWcoaW0pOwoJY2luPj5yPj5pbTsKCWMyLnNldEltYWcoaW0pOwoJYzMuYWRkKGMxLGMyKTsKCWMyLnNldFJlYWwocik7Cgljb21wbGV4ICZjNT1jNC5tYXhDb21wbGV4KGMxLGMyKTsKCWNpbj4+cj4+aW07Cgljb21wbGV4IGM3KHIsaW0pOwoJYzg9Yzc7CgljOT1jMSArIGMyOwoJY2luPj5yPj5pbTsKCWMxMC5zZXRSZWFsKHIpOwoJYzEwLnNldEltYWcoaW0pOwoJYzEwPXI7CglsPWMxOwoJcDE9YzE7CgljMT1wMTsKCWNvdXQ8PCJTdW0gaXMgIiA8PCBjMy5nZXRSZWFsKCkgPDwgIiArIGkiIDw8IGMzLmdldEltYWcoKSA8PCAiXG4iOwoJY291dCA8PCJNYXggaXMgIiA8PCBjNS5nZXRSZWFsKCkgPDwgIiArIGkiIDw8IGM1LmdldEltYWcoKTw8IlxuIjsKCWNvdXQgPDwgIkRlZmF1bHQgY29uc3RydWN0b3IgIiA8PCBjNi5nZXRSZWFsKCkgPDwgIiArIGkiIDw8IGM2LmdldEltYWcoKTw8IlxuIjsKCWNvdXQ8PCJQYXJhbWF0LiBjb25zdHJ1Y3RvciAiIDw8IGM3LmdldFJlYWwoKSA8PCAiICsgaSIgPDwgYzcuZ2V0SW1hZygpIDw8ICJcbiI7Cgljb3V0PDwiY29weSBjb25zdHJ1Y3RvciAiIDw8IGM4LmdldFJlYWwoKSA8PCAiICsgaSIgPDwgYzguZ2V0SW1hZygpIDw8ICJcbiI7Cgljb3V0IDw8ICJPYmplY3RzIGFyZSAiIDw8IGNvbXBsZXg6OmdldE9iaigpPDwiXG4iOwoJY291dCA8PCAiT3BlcmF0b3IgKyAiIDw8IGM5LmdldFJlYWwoKSA8PCAiICsgaSIgPDwgYzkuZ2V0SW1hZygpPDwiXG4iOwoJY291dCA8PCAiQ29udmVydG9yICIgPDwgYzEwLmdldFJlYWwoKSA8PCAiICsgaSIgPDwgYzEwLmdldEltYWcoKTw8IlxuIjsKCWNvdXQgPDwgIk1BZ25pdHVkZSBpcyAiIDw8IGw8PCJcbiI7Cgljb3V0IDw8ICJQb2xhciByZXByZXNlbnRhdGlvbiAiIDw8IHAxLmdldFIoKSA8PCAiICAgIiA8PCBwMS5nZXRUaGV0YSgpPDwiXG4iOwoJY291dCA8PCJSZWN0IHJlcHJlc2VudGF0aW9uICIgPDwgYzEuZ2V0UmVhbCgpIDw8ICIgKyBpIiA8PCBjMS5nZXRJbWFnKCk7CgkKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9