C/C++

Задание на С++ Тема: Вектор

Задание на языке С++:
1. Создать класс Vektor. 

В закрытых полях private указываются значения трех координат вектора. В открытых полях public создаются конструктор по умолчанию, конструктор c тремя параметрами (по числу размерности вектора) и деструктор по умолчанию.

2. Написать перегрузку оператора <<.

Данный метод должен обеспечивать печать координат вектора в следующем виде (…;…;…).

3. Перегрузка операторов + и -.

Сложение и вычитание векторов 

4. Перегрузка оператора * в случае взаимодействия объекта класса и числа.

Результатом перегрузки является новый объект класса.

5. Перегрузка оператора * в случае взаимодействия числа и объекта класса.

Результатом перегрузки является новый объект класса.
真弘 渡邉
真弘 渡邉
21
#include <iostream>
#include <iomanip>
using namespace std;
class Vector {
public:
Vector() : x(0), y(0), z(0) {}
Vector(const double x, const double y, const double z) : x(x), y(y), z(z) {}
~Vector() {}
private:
double x;
double y;
double z;
friend ostream& operator<<(ostream& out, const Vector& v) {
return out << "{ " << v.x << "; " << v.y << "; " << v.z << " }";
}
friend Vector operator+(const Vector& a, const Vector& b) {
return Vector{ a.x + b.x, a.y + b.y, a.z + b.z };
}
friend Vector operator-(const Vector& a, const Vector& b) {
return Vector{ a.x - b.x, a.y - b.y, a.z - b.z };
}
friend Vector operator*(const Vector& v, const double n) {
return Vector{ v.x * n, v.y * n, v.z * n };
}
friend Vector operator*(const double n, const Vector& v) {
return Vector{ v.x * n, v.y * n, v.z * n };
}
};
int main() {
Vector v1{ 2.5, -1.6, -4.7 };
Vector v2{ -3.9, 5.4, -1.8 };
cout << fixed << setprecision(2);
cout << v1 << '\n' << v2 << "\n\n";
auto sum_v1_v2 = v1 + v2;
cout << v1 << " + " << v2 << " = " << sum_v1_v2 << '\n';
auto diff_v1_v2 = v1 - v2;
cout << v1 << " - " << v2 << " = " << diff_v1_v2 << "\n\n";
double n = 1.2;
auto mult_v1_n = v1 * n;
cout << v1 << " * " << n << " = " << mult_v1_n << '\n';
auto mult_n_v2 = n * v2;
cout << n << " * " << v2 << " = " << mult_n_v2 << '\n';
system("pause > nul");
}
АД
Адиль Дуйсенбек
97 829
Лучший ответ