Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #include <math.h>
  2. #include <iostream>
  3.  
  4. class Complex
  5. {
  6. private:
  7. double Re_{};
  8. double Im_{};
  9. public:
  10. double Re() const noexcept {
  11. return Re_;
  12. }
  13. double Im() const noexcept {
  14. return Im_;
  15. }
  16. void SetRe(double x) noexcept {
  17. Re_ = x;
  18. }
  19. void SetIm(double x) noexcept {
  20. Im_ = x;
  21. }
  22. Complex() {
  23. this->Re_ = 0.0;
  24. this->Im_ = 0.0;
  25. }
  26. Complex(double re) {
  27. this->Re_ = re;
  28. this->Im_ = 0.0;
  29. }
  30. Complex(double re, double im) {
  31. this->Re_ = re;
  32. this->Im_ = im;
  33. }
  34. Complex operator+() const noexcept {
  35. return *this;
  36. }
  37. Complex operator-() const noexcept {
  38. return { -Re(), -Im() };
  39. }
  40. friend Complex operator+(Complex a, const Complex& b) {
  41. return { a.Re() + b.Re(), a.Im() + b.Im() };
  42. }
  43. friend Complex operator-(Complex a, const Complex& b) {
  44. return { a.Re() - b.Re(), a.Im() - b.Im() };
  45. }
  46. friend Complex operator*(Complex a, const Complex& b) {
  47. return { a.Re() * b.Re() - a.Im() * b.Im(), a.Re() * b.Im() + b.Re() * a.Im() };
  48. }
  49. friend Complex operator/(Complex a, const Complex& b) {
  50. return { ((a.Re() * b.Re() + a.Im() * b.Im()) / (b.Re() * b.Re() + b.Im() * b.Im())),
  51. ((b.Re() * a.Im() - (a.Re() * b.Im())) / (b.Re() * b.Re() + b.Im() * b.Im())) };
  52. }
  53. friend bool operator==(const Complex& a, const Complex& b) {
  54. return (a.Re() == b.Re() && a.Im() == b.Im());
  55. }
  56. friend bool operator!=(const Complex& a, const Complex& b) {
  57. return !(a == b);
  58. }
  59. };
  60.  
  61. double abs(Complex a) {
  62. return std::sqrt(a.Re() * a.Re() + a.Im() * a.Im());
  63. }
  64.  
  65. std::ostream& operator<<(std::ostream& os, const Complex& a) {
  66. os << a.Re() << ' ' << a.Im() << "i";
  67. return os;
  68. }
  69. std::istream& operator>>(std::istream& is, Complex& a) {
  70. double Re, Im;
  71. std::cout << "Complex: ";
  72. is >> Re >> Im;
  73. std::cout << '\n';
  74. a.SetRe(Re);
  75. a.SetIm(Im);
  76. return is;
  77. }
  78.  
  79. int main()
  80. {
  81. Complex a, b;
  82. std::cin >> a >> b;
  83. std::cout << a + b << '\n';
  84. std::cout << a + 4 << '\n';
  85. std::cout << a - 2 << '\n';
  86. std::cout << 2 - a << '\n';
  87. std::cout << a - b << '\n';
  88. std::cout << a * b << '\n';
  89. std::cout << a / b << '\n';
  90. std::cout << (a == b) << '\n';
  91. std::cout << (a != b) << '\n';
  92. std::cout << abs(a) << '\n';
  93. std::cout << abs(b) << '\n';
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement