
Задание на языке С++: 1. Создать класс Vektor. В закрытых полях private указываются значения
трех координат вектора. В открытых полях public создаются конструктор по умолчанию, конструктор c тремя параметрами (по числу размерности вектора) и деструктор по умолчанию. 2. Написать перегрузку оператора <<. Данный метод должен обеспечивать печать координат вектора в следующем виде (…;…;…). 3. Перегрузка операторов + и -. Сложение и вычитание векторов 4. Перегрузка оператора * в случае взаимодействия объекта класса и числа. Результатом перегрузки является новый объект класса. 5. Перегрузка оператора * в случае взаимодействия числа и объекта класса. Результатом перегрузки является новый объект класса.

Ответы на вопрос

#include <iostream>
class Vector
{
private:
int16_t
x,
y,
z;
public:
Vector() = default;
explicit Vector(const int16_t &x = 0, const int16_t& y = 0, const int16_t& z = 0) : x(x), y(y), z(z) {}
~Vector() = default;
Vector operator +(const Vector& vector)
{
return Vector(this->x + vector.x, this->y + vector.y, this->z + vector.z);
}
Vector operator -(const Vector& vector)
{
return Vector(this->x - vector.x, this->y - vector.y, this->z - vector.z);
}
Vector operator *(const int16_t &_value) const
{
return Vector(this->x * _value,\
this->y * _value,\
this->z * _value);
}
friend Vector operator*(const int16_t&, const Vector&);
friend std::ostream &operator<<(std::ostream&, const Vector&);
};
std::ostream &operator<<(std::ostream &_buffer, const Vector &_vector)
{
_buffer << _vector.x << ";" << _vector.y << ";" << _vector.z;
return _buffer;
}
Vector operator*(const int16_t& _value, const Vector& _vector)
{
return _vector.operator*(_value);
}
int main()
{
Vector v(1, 2, 3);
Vector c = 5 * v;
std::cout << v << std::endl
<< c << std::endl
<< v + c << std::endl
<< v - c << std::endl;
return 0;
}




Конечно, вот пример реализации класса Vektor в языке C++ с учетом всех указанных требований:
cpp#include <iostream>
class Vektor {
private:
double x, y, z;
public:
// Конструкторы и деструктор
Vektor() : x(0), y(0), z(0) {}
Vektor(double x, double y, double z) : x(x), y(y), z(z) {}
~Vektor() {}
// Перегрузка оператора <<
friend std::ostream& operator<<(std::ostream& os, const Vektor& v) {
os << "(" << v.x << ";" << v.y << ";" << v.z << ")";
return os;
}
// Перегрузка операторов + и -
Vektor operator+(const Vektor& other) const {
return Vektor(x + other.x, y + other.y, z + other.z);
}
Vektor operator-(const Vektor& other) const {
return Vektor(x - other.x, y - other.y, z - other.z);
}
// Перегрузка оператора * для умножения на число (объект * число)
Vektor operator*(double scalar) const {
return Vektor(x * scalar, y * scalar, z * scalar);
}
// Перегрузка оператора * для умножения числа на объект (число * объект)
friend Vektor operator*(double scalar, const Vektor& v) {
return Vektor(v.x * scalar, v.y * scalar, v.z * scalar);
}
};
int main() {
// Пример использования класса Vektor
Vektor v1(1, 2, 3);
Vektor v2(4, 5, 6);
std::cout << "v1: " << v1 << std::endl;
std::cout << "v2: " << v2 << std::endl;
Vektor sum = v1 + v2;
std::cout << "Сумма: " << sum << std::endl;
Vektor diff = v1 - v2;
std::cout << "Разность: " << diff << std::endl;
Vektor scaled = v1 * 2.5;
std::cout << "Умножение на число: " << scaled << std::endl;
Vektor scaled2 = 1.5 * v2;
std::cout << "Умножение числа на объект: " << scaled2 << std::endl;
return 0;
}
В этом примере создается класс Vektor
с требуемыми конструкторами и перегрузкой операторов <<
, +
, -
и *
для умножения вектора на число и умножения числа на вектор.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili