Загрузка данных


return a * k + b * m;
    }

    friend VECTOR3 operator*(double k, const VECTOR3 v) {
        return v * k;
    }

    double getZ() const { return z; }
};

int main() {
    try {
        // Пример для VECTOR2
        VECTOR2 a(1.0, 2.0), b(3.0, 4.0);
        std::cout << "a = "; a.display(); std::cout << "\n";
        std::cout << "b = "; b.display(); std::cout << "\n";

        VECTOR2 c = a + b;
        std::cout << "a + b = "; c.display(); std::cout << "\n";

        VECTOR2 d = a * 2.5;
        std::cout << "a * 2.5 = "; d.display(); std::cout << "\n";

        double dot2 = a * b;
        std::cout << "a . b = " << dot2 << "\n";

        VECTOR2 e = VECTOR2::combine(2.0, a, 3.0, b); // c = 2*a + 3*b
        std::cout << "2*a + 3*b = "; e.display(); std::cout << "\n";

        // Пример для VECTOR3
        VECTOR3 p(1.0, 2.0, 3.0), q(4.0, 5.0, 6.0);
        std::cout << "p = "; p.display(); std::cout << "\n";
        std::cout << "q = "; q.display(); std::cout << "\n";

        VECTOR3 r = p + q;
        std::cout << "p + q = "; r.display(); std::cout << "\n";

        double dot3 = p * q;
        std::cout << "p . q = " << dot3 << "\n";

        VECTOR3 s = VECTOR3::combine(1.0, p, -1.0, q); // s = p - q
        std::cout << "p - q = "; s.display(); std::cout << "\n";

    } catch (const std::exception ex) {
        std::cerr << "Error: " << ex.what() << "\n";
    }
    return 0;
}

Если нужно, могу:
• добавить оператор присваивания (operator=) явно,
• реализовать векторный (векторное) произведение для 3D,
• реализовать ввод/вывод через операторы >>/<<,
• или адаптировать стиль вывода/точность.