Advertisement
Guest User

Untitled

a guest
Oct 20th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. //заголовочный файл
  2.  
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. class Complex {
  7. private://приватные поля класса, которые доступны только внутри этого класса
  8. double re;
  9. double im;
  10. public://публичные поля класса, которые доступны вне этого класса
  11. Complex() {} //конструктор по умолчанию
  12. Complex(double r, double i) { re = r, im = i; } //конструктор преобразования
  13.  
  14. Complex(Complex &a) : re(a.re), im(a.im) {} //конструктор копирования
  15.  
  16. ~Complex() {}//деструктор
  17.  
  18. Complex operator+(Complex z1);//перегрузка оператора сложения
  19. Complex operator-(Complex z1);//перегрузка оператора вычитания
  20. Complex operator*(Complex z1);//перегрузка оператора умножения
  21. //аксессоры приватных полей
  22. double GetReal() {
  23. return re;
  24. }
  25. double GetImage() {
  26. return im;
  27. }
  28. //создаются дружественные функции для доступа к приватным и протектед полям этого класса
  29. friend ostream& operator << (ostream &fo, Complex &fp);//перегрузка оператора вывода
  30. };
  31. //////////////////////////////////////////////////////////
  32. //////////////////////////////////////////////////////////
  33. //////////////////////////////////////////////////////////
  34. //////////////////////////////////////////////////////////
  35.  
  36. //cpp файл
  37. #include <iostream>
  38. #include "complex.h"
  39. using namespace std;
  40.  
  41. // метод перегрузка оператора+
  42. Complex Complex::operator+(Complex z1)
  43. {
  44. //вычитание по правилам комплексных чисел
  45. z1.re = re + z1.re;
  46. z1.im = im + z1.im;
  47. return z1;
  48. }
  49.  
  50. // метод перегрузка оператора-
  51. Complex Complex::operator-(Complex z1)
  52. {
  53. //вычитание по правилам комплексных чисел
  54. z1.re = re - z1.re;
  55. z1.im = im - z1.im;
  56. return z1;
  57. }
  58.  
  59. // метод перегрузка оператора*
  60. Complex Complex::operator*(Complex z1)
  61. {
  62. //умножение по правилам комплексных чисел
  63. double k, j;
  64. k = re * z1.re - im * z1.im;
  65. j = re * z1.im + z1.re * im;
  66. z1.re = k;
  67. z1.im = j;
  68. return z1;
  69. }
  70.  
  71. // метод перегрузка оператора вывода
  72. ostream &operator<< (ostream &fo, Complex &fp)
  73. {
  74. //cout стал параметром fo в нашей функции перегрузки,
  75. //который станет ссылкой на cout при вызове этого оператора
  76. if (fp.im < 0) fo << fp.re << "+i(" << fp.im << ")\n";
  77. else fo << fp.re << "+i" << fp.im << "\n";
  78.  
  79. return fo;
  80. }
  81.  
  82. //////////////////////////////////////////////////////////
  83. //////////////////////////////////////////////////////////
  84. //////////////////////////////////////////////////////////
  85. //////////////////////////////////////////////////////////
  86. //main
  87. #include <iostream>
  88. #include "complex.h"
  89.  
  90. using namespace std;
  91.  
  92. int main()
  93. {
  94.  
  95. setlocale(LC_ALL, "rus");
  96. Complex c1;
  97. Complex c2(3, 4);//используется конструктор преобразования
  98. Complex c3(c2);//используется констуктор копирования
  99. cout << "c1 + c2 = " << (c1 + c3);
  100. cout << "c2 - c1 = " << (c2 - c1);
  101. cout << "c1 * c3 = " << (c1 * c3);
  102.  
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement