Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Vector3D
- {
- public:
- Vector3D(int _x, int _y,int _z) : x(_x), y(_y), z(_z) {
- }
- Vector3D() : Vector3D(0, 0, 0) {
- }
- // Получение координат
- int getX() const {
- return x;
- }
- int getY() const {
- return y;
- }
- int getZ() const {
- return z;
- }
- // Задание координат
- void setX(int x) {
- this->x = x;
- }
- void setY(int y) {
- this->y = y;
- }
- void setZ(int z) {
- this->z = z;
- }
- // Перегруженный оператор - сравнение двух векторов на равенство
- bool operator== (const Vector3D& v3) const
- {
- return x == v3.x && y == v3.y && z == v3.z;
- };
- // Ещё один перегруженный оператор - неравенство векторов
- // Да, это отдельный оператор! Хинт - настоящие джедаи смогут для != использовать уже написанное ==
- bool operator!= (const Vector3D& v3) const
- {
- return x != v3.x || y != v3.y || z != v3.z;
- };
- // Сумма двух векторов, исходные вектора не меняются, возвращается новый вектор
- Vector3D operator+ (const Vector3D& v3) const
- {
- return Vector3D(x + v3.x, y + v3.y, z + v3.z);
- };
- int operator* (const Vector3D& v3)
- {
- return (x * v3.getX() + y * v3.getY() + z * v3.getZ());
- };
- // Вычитание векторов, исходные вектора не меняются, возвращается новый вектор
- Vector3D operator- (const Vector3D& v3) const
- {
- return Vector3D(x - v3.x, y - v3.y, z - v3.z);
- };
- // Оператор умножения вектора на скаляр, исходный вектор не меняется, возвращается новый вектор
- Vector3D operator* (const int a) const
- {
- return Vector3D(a * x, a * y, a * z);
- };
- protected:
- int x;
- int y;
- int z;
- };
- Vector3D operator* (int a, const Vector3D& v)
- {
- return Vector3D(a * v.getX(), a * v.getY(), a*v.getZ());
- };
- ostream& operator<<(ostream& os, const Vector3D& v)
- {
- os << "(" << v.getX() << "; " << v.getY() << "; " << v.getZ() << ")";
- return os;
- };
- // Чтение вектора, читает просто две координаты без хитростей
- istream& operator>>(istream& is, Vector3D& v)
- {
- int x;
- int y;
- int z;
- is >> x >> y >> z;
- v.setX(x);
- v.setY(y);
- v.setZ(z);
- return is;
- };
- int main()
- {
- // Вектор задан в коде
- Vector3D A(1, 2, 3);
- // Вектор читается из cin
- Vector3D B;
- cin >> B;
- // Базовые операции с векторами
- cout << "A = " << A << endl;
- cout << "B = " << B << endl;
- cout << "A * 3 = " << A * 3 << endl;
- cout << "2 * B = " << 2 * B << endl;
- cout << "A + B = " << A + B << endl;
- cout << "A - B = " << A - B << endl;
- cout << "A * B = " << A * B << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement