C/C++

Найдите сумму, разность и скалярное произведение двух векторов в N-мерном пространстве. Язык С++ ООП

Распределение памяти для хранения массивов должно быть в конструкторе, а освобождение – в деструкторе.
 #include  
#include

using namespace std;

class Vector {
private:
int n; // Размерность вектора
vector v; // Массив значений вектора
public:
// Конструктор
Vector(int size) {
n = size;
v.reserve(n);
}
// Деструктор
~Vector() {
v.clear();
}
// Заполнение вектора
void fill() {
double value;
for (int i = 0; i < n; i++) {
cout
РХ
Рафис Хафизов
2 925
Лучший ответ
Куаныш Мынжасаров Огромная вам благодарность
Вот пример С++ кода, который выполняет операции с векторами в N-мерном пространстве, используя динамическое выделение памяти для массивов в конструкторе и освобождение памяти в деструкторе:

```
#include <iostream>
#include <cmath>

using namespace std;

class Vector {
private:
int n;
double *v;
public:
Vector(int dim) {
n = dim;
v = new double[dim];
}

~Vector() {
delete [] v;
}

void setCoord(int i, double value) {
v[i] = value;
}

double getCoord(int i) {
return v[i];
}

int getDimension() {
return n;
}

Vector operator+(Vector& other) {
Vector result(n);
for (int i = 0; i < n; i++) {
result.v[i] = v[i] + other.v[i];
}
return result;
}

Vector operator-(Vector& other) {
Vector result(n);
for (int i = 0; i < n; i++) {
result.v[i] = v[i] - other.v[i];
}
return result;
}

double operator*(Vector& other) {
double result = 0.0;
for (int i = 0; i < n; i++) {
result += v[i] * other.v[i];
}
return result;
}
};

int main() {
int dim = 3;
Vector v1(dim);
Vector v2(dim);

v1.setCoord(0, 1);
v1.setCoord(1, 2);
v1.setCoord(2, 3);

v2.setCoord(0, 4);
v2.setCoord(1, 5);
v2.setCoord(2, 6);

// Сумма
Vector sum = v1 + v2;
for (int i = 0; i < dim; i++) {
cout << sum.getCoord(i) << " ";
}
cout << endl;

// Разность
Vector diff = v1 - v2;
for (int i = 0; i < dim; i++) {
cout << diff.getCoord(i) << " ";
}
cout << endl;

// Скалярное произведение
double scalarProduct = v1 * v2;
cout << scalarProduct << endl;

return 0;
}
```

В данном примере конструкор выделяет память для массива `v`, а деструктор освобожает память, чтобы избежать утечек памяти. Операторы `+`, `-` и `*` перегружены для соотвествующих операций с векторами в N-мерном пространстве.
Сергей Фризен
Сергей Фризен
14 368