Advertisement
L3peha

Untitled

Mar 11th, 2020
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. class Vector3D
  7. {
  8. public:
  9. Vector3D(int _x, int _y,int _z) : x(_x), y(_y), z(_z) {
  10. }
  11. Vector3D() : Vector3D(0, 0, 0) {
  12. }
  13.  
  14. // Получение координат
  15. int getX() const {
  16. return x;
  17. }
  18. int getY() const {
  19. return y;
  20. }
  21. int getZ() const {
  22. return z;
  23. }
  24. // Задание координат
  25.  
  26. void setX(int x) {
  27. this->x = x;
  28. }
  29. void setY(int y) {
  30. this->y = y;
  31. }
  32. void setZ(int z) {
  33. this->z = z;
  34. }
  35. // Перегруженный оператор - сравнение двух векторов на равенство
  36. bool operator== (const Vector3D& v3) const
  37. {
  38. return x == v3.x && y == v3.y && z == v3.z;
  39. };
  40.  
  41. // Ещё один перегруженный оператор - неравенство векторов
  42. // Да, это отдельный оператор! Хинт - настоящие джедаи смогут для != использовать уже написанное ==
  43. bool operator!= (const Vector3D& v3) const
  44. {
  45. return x != v3.x || y != v3.y || z != v3.z;
  46. };
  47.  
  48. // Сумма двух векторов, исходные вектора не меняются, возвращается новый вектор
  49. Vector3D operator+ (const Vector3D& v3) const
  50. {
  51. return Vector3D(x + v3.x, y + v3.y, z + v3.z);
  52. };
  53.  
  54. int operator* (const Vector3D& v3)
  55. {
  56. return (x * v3.getX() + y * v3.getY() + z * v3.getZ());
  57. };
  58.  
  59. // Вычитание векторов, исходные вектора не меняются, возвращается новый вектор
  60. Vector3D operator- (const Vector3D& v3) const
  61. {
  62. return Vector3D(x - v3.x, y - v3.y, z - v3.z);
  63. };
  64.  
  65. // Оператор умножения вектора на скаляр, исходный вектор не меняется, возвращается новый вектор
  66. Vector3D operator* (const int a) const
  67. {
  68. return Vector3D(a * x, a * y, a * z);
  69. };
  70. protected:
  71. int x;
  72. int y;
  73. int z;
  74. };
  75. Vector3D operator* (int a, const Vector3D& v)
  76. {
  77. return Vector3D(a * v.getX(), a * v.getY(), a*v.getZ());
  78. };
  79.  
  80. ostream& operator<<(ostream& os, const Vector3D& v)
  81. {
  82. os << "(" << v.getX() << "; " << v.getY() << "; " << v.getZ() << ")";
  83. return os;
  84. };
  85.  
  86. // Чтение вектора, читает просто две координаты без хитростей
  87. istream& operator>>(istream& is, Vector3D& v)
  88. {
  89. int x;
  90. int y;
  91. int z;
  92.  
  93. is >> x >> y >> z;
  94. v.setX(x);
  95. v.setY(y);
  96. v.setZ(z);
  97. return is;
  98. };
  99.  
  100. int main()
  101. {
  102. // Вектор задан в коде
  103. Vector3D A(1, 2, 3);
  104. // Вектор читается из cin
  105. Vector3D B;
  106. cin >> B;
  107.  
  108. // Базовые операции с векторами
  109. cout << "A = " << A << endl;
  110. cout << "B = " << B << endl;
  111. cout << "A * 3 = " << A * 3 << endl;
  112. cout << "2 * B = " << 2 * B << endl;
  113. cout << "A + B = " << A + B << endl;
  114. cout << "A - B = " << A - B << endl;
  115. cout << "A * B = " << A * B << endl;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement