fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. class Complex_Number{
  8. private:
  9. float real_part;
  10. float virtual_part;
  11. public:
  12. Complex_Number(float _real_part=0,float _virtual_part=0){
  13. this->real_part=_real_part;
  14. this->virtual_part=_virtual_part;
  15. }
  16. ~Complex_Number(){
  17. real_part=virtual_part=0;
  18. }
  19. float Get_real_part();
  20. float Get_virtual_part();
  21. float Module();
  22.  
  23. friend istream &operator>>(istream &in,Complex_Number &cpn);
  24. friend ostream &operator<<(ostream &out,Complex_Number &cpn);
  25.  
  26. friend Complex_Number operator+(const Complex_Number &a,const Complex_Number &b);
  27. friend Complex_Number operator-(const Complex_Number &a,const Complex_Number &b);
  28. friend Complex_Number operator*(const Complex_Number &a,const Complex_Number &b);
  29. friend Complex_Number operator/(const Complex_Number &a,const Complex_Number &b);
  30. //compare by module
  31. friend Complex_Number operator>(const Complex_Number &a,const Complex_Number &b);
  32. friend Complex_Number operator<(const Complex_Number &a,const Complex_Number &b);
  33. // friend Complex_Number operator=();
  34. };
  35.  
  36. float Complex_Number::Get_real_part(){
  37. return this->real_part;
  38. }
  39.  
  40. float Complex_Number::Get_virtual_part(){
  41. return this->virtual_part;
  42. }
  43.  
  44. float Complex_Number::Module(){
  45. return sqrt( pow(real_part,2) + pow(virtual_part,2) );
  46. }
  47.  
  48. istream &operator>>(istream &in,Complex_Number &cpn){
  49. cout<<"Enter real part: ";
  50. in>>cpn.real_part;
  51. cout<<"Enter virtual part: ";
  52. in>>cpn.virtual_part;
  53. return in;
  54. }
  55.  
  56. ostream &operator<<(ostream &out,Complex_Number &cpn){
  57. out<<cpn.real_part<<" + "<<cpn.virtual_part<<"i";
  58. return out;
  59. }
  60.  
  61. Complex_Number operator+(const Complex_Number &a,const Complex_Number &b){
  62. Complex_Number c;
  63. c.real_part = a.real_part + b.real_part;
  64. c.virtual_part = a.virtual_part + b.virtual_part;
  65. return c;
  66. }
  67.  
  68. Complex_Number operator-(const Complex_Number &a,const Complex_Number &b){
  69. Complex_Number c;
  70. c.real_part = a.real_part - b.real_part;
  71. c.virtual_part = a.virtual_part - b.virtual_part;
  72. return c;
  73. }
  74.  
  75. Complex_Number operator*(const Complex_Number &a,const Complex_Number &b){
  76. Complex_Number c;
  77. c.real_part = (a.real_part * b.real_part) - (a.virtual_part * b.virtual_part);
  78. c.virtual_part = (a.real_part * b.virtual_part) + (a.virtual_part * b.real_part);
  79. return c;
  80. }
  81.  
  82. Complex_Number operator/(const Complex_Number &a,const Complex_Number &b){
  83. Complex_Number c;
  84. c.real_part=( (a.real_part * b.real_part) + (a.virtual_part * b.virtual_part) ) / b.Module();
  85. c.virtual_part=( (a.virtual_part * b.real_part) - (a.real_part * b.virtual_part) ) / b.Module();
  86. return c;
  87. }
  88.  
  89. Complex_Number operator>(Complex_Number &a,Complex_Number &b){
  90. Complex_Number c;
  91. if(a.Module() > b.Module())
  92. return true;
  93. else
  94. return false;
  95. }
  96.  
  97.  
  98.  
  99. int main(){
  100. setprecision(2);
  101. }
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘Complex_Number operator/(const Complex_Number&, const Complex_Number&)’:
prog.cpp:84:93: error: passing ‘const Complex_Number’ as ‘this’ argument discards qualifiers [-fpermissive]
  c.real_part=( (a.real_part * b.real_part) + (a.virtual_part * b.virtual_part) ) / b.Module();
                                                                                             ^
prog.cpp:44:7: note:   in call to ‘float Complex_Number::Module()’
 float Complex_Number::Module(){
       ^~~~~~~~~~~~~~
prog.cpp:85:96: error: passing ‘const Complex_Number’ as ‘this’ argument discards qualifiers [-fpermissive]
  c.virtual_part=( (a.virtual_part * b.real_part) - (a.real_part * b.virtual_part) ) / b.Module();
                                                                                                ^
prog.cpp:44:7: note:   in call to ‘float Complex_Number::Module()’
 float Complex_Number::Module(){
       ^~~~~~~~~~~~~~
stdout
Standard output is empty