fork download
  1. #include <iostream>
  2. #include<cmath>
  3. using namespace std;
  4. class complex
  5. {
  6. static int obj;
  7. double real;
  8. double imag;
  9. public:
  10. void setReal(double r)
  11. {
  12. real=r;
  13. }
  14. void setImag(double r)
  15. {
  16. imag=r;
  17. }
  18. double getReal()
  19. {
  20. return real;
  21. }
  22. double getImag()
  23. {
  24. return imag;
  25. }
  26. void add(complex &a,complex &b)
  27. {
  28. real=a.real+b.real;
  29. imag=a.imag+b.imag;
  30. }
  31. complex & maxComplex(complex &a,complex &b)
  32. {
  33. double mag1,mag2;
  34. mag1=a.real*a.real+a.imag*a.imag;
  35. mag2=b.real*b.real+b.imag*b.imag;
  36. if(mag1>mag2)
  37. return a;
  38. else
  39. return b;
  40. }
  41. complex()
  42. {
  43. real=59;
  44. imag=69;
  45. obj++;
  46. }
  47. complex(double r,double im)
  48. {
  49. real=r;
  50. imag=im;
  51. obj++;
  52. }
  53. complex(complex &c)
  54. {
  55. real=c.real;
  56. imag=c.imag;
  57. obj++;
  58. }
  59. static int getObj()
  60. {
  61. return obj;
  62. }
  63. complex operator +(complex &c);
  64. complex(double r):real(r),imag(0.0){};
  65. operator double();
  66. };
  67. int complex::obj=0;
  68. complex complex::operator +(complex &c)
  69. {
  70. complex s;
  71. s.real=real+c.real;
  72. s.imag=imag+c.imag;
  73. return s;
  74. }
  75. complex::operator double()
  76. {
  77. double r;
  78. r=sqrt(real*real+imag*imag);
  79. return r;
  80. }
  81.  
  82. class polarcomplex
  83. {
  84. double r;
  85. double theta;
  86. public:
  87. polarcomplex()
  88. {
  89. r=68;
  90. theta=9;
  91. }
  92. double getR()
  93. {
  94. return r;
  95. }
  96. double getTheta()
  97. {
  98. return theta;
  99. }
  100. polarcomplex(complex &c)
  101. {
  102. r=sqrt(c.getReal()*c.getReal()+c.getImag()*c.getImag());
  103. theta=atan(c.getImag()/c.getReal());
  104. }
  105. operator complex()
  106. {
  107. complex j;
  108. j.setReal(r*cos(theta));
  109. j.setImag(r*sin(theta));
  110. return j;
  111. }
  112. };
  113. int main()
  114. {
  115. double r,im;
  116. double l;
  117. complex c1,c2,c3,c4;
  118. complex c6,c8,c9,c10;
  119. polarcomplex p1;
  120. cin>>r>>im;
  121. c1.setReal(r);
  122. c1.setImag(im);
  123. cin>>r>>im;
  124. c2.setImag(im);
  125. c3.add(c1,c2);
  126. c2.setReal(r);
  127. complex &c5=c4.maxComplex(c1,c2);
  128. cin>>r>>im;
  129. complex c7(r,im);
  130. c8=c7;
  131. c9=c1 + c2;
  132. cin>>r>>im;
  133. c10.setReal(r);
  134. c10.setImag(im);
  135. c10=r;
  136. l=c1;
  137. p1=c1;
  138. c1=p1;
  139. cout<<"Sum is " << c3.getReal() << " + i" << c3.getImag() << "\n";
  140. cout <<"Max is " << c5.getReal() << " + i" << c5.getImag()<<"\n";
  141. cout << "Default constructor " << c6.getReal() << " + i" << c6.getImag()<<"\n";
  142. cout<<"Paramat. constructor " << c7.getReal() << " + i" << c7.getImag() << "\n";
  143. cout<<"copy constructor " << c8.getReal() << " + i" << c8.getImag() << "\n";
  144. cout << "Objects are " << complex::getObj()<<"\n";
  145. cout << "Operator + " << c9.getReal() << " + i" << c9.getImag()<<"\n";
  146. cout << "Convertor " << c10.getReal() << " + i" << c10.getImag()<<"\n";
  147. cout << "MAgnitude is " << l<<"\n";
  148. cout << "Polar representation " << p1.getR() << " " << p1.getTheta()<<"\n";
  149. cout <<"Rect representation " << c1.getReal() << " + i" << c1.getImag();
  150.  
  151. // your code goes here
  152. return 0;
  153. }
Success #stdin #stdout 0s 4252KB
stdin
9 6
7 5
5 68
7 84
stdout
Sum is 68 + i11
Max is 9 + i6
Default constructor 59 + i69
Paramat. constructor 5 + i68
copy constructor 5 + i68
Objects are 11
Operator + 16 + i11
Convertor 7 + i0
MAgnitude is 10.8167
Polar representation 10.8167   0.588003
Rect representation 9 + i6