C/C++

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

Использовать template!

Распределение памяти для хранения массивов должно быть в конструкторе, а освобождение – в деструкторе.
Вектор в N-мерном пространстве - это всего лишь одномерный массив длиной N.

Сумма векторов a и b d векторе c:
 for (int i = 0; i < N; ++i) { c[i] = a[i] + b[i]; } 
Разность векторов a и b векторе c:
 for (int i = 0; i < N; ++i) { c[i] = a[i] - b[i]; } 
Скалярное произведение в переменной result:
 result = 0;
for (int i = 0; i < N; ++i) { result += a[i] * b[i]; }

А что за класс надо сделать - о котором в вопросе ни слова не сказано - и как в этот класс встроить код векторных операций - это уже сам[а].
АЛ
Андрей Лопоха
66 572
Лучший ответ
нафига выделять и освобождать память?

можно же указать размер массива в шаблоне

 #include  

using namespace std;

template
class Vector
{
public:
Vector(){ Set(0); }

_type m_data[_size];

void Set(_type v)
{
for(uint32_t i = 0; i < _size; ++i)
{
m_data[i] = v;
}
}

_type Summ()
{
_type ret = static_cast(0);
for(uint32_t i = 0; i < _size; ++i)
{
ret += m_data[i];
}
return ret;
}
};

int main()
{
Vector v;
v.Set(1);

cout
Ох и задание ты конечно дал. Жаль, конечно, что значения не дал, но я введу случайные. Однако же странно, что ты заявил про освобождение памяти, так как тут энивей будет использоваться std::array. Ну, я попытался выполнить требования, вот код (GCC 12):

 #include  
#include

template
class Vector {
private:
T* data;

public:
Vector() : data(new T[N]) {}
Vector(const std::array& arr) : data(new T[N]) {
for (std::size_t i = 0; i < N; i++) {
data[i] = arr[i];
}
}
Vector(std::initializer_list list) : data(new T[N]) {
std::size_t i = 0;
for (const auto& elem : list) {
data[i] = elem;
i++;
if (i >= N) {
break;
}
}
}
~Vector() {
delete[] data;
}

Vector operator+ (const Vector& other) const {
std::array resultArray {0};
for (std::size_t i = 0; i < N; i++) {
resultArray[i] = data[i] + other[i];
}
return Vector(resultArray);
}

Vector operator- (const Vector& other) const {
std::array resultArray {0};
for (std::size_t i = 0; i < N; i++) {
resultArray[i] = data[i] - other[i];
}
return Vector(resultArray);
}

T operator* (const Vector& other) const {
T result = 0;
for (std::size_t i = 0; i < N; i++) {
result += data[i] * other[i];
}
return result;
}

const T& operator[] (std::size_t index) const {
return data[index];
}

T& operator[] (std::size_t index) {
return data[index];
}
};

int main() {
Vector v1{1, 2, 3, 4};
Vector v2{5, 6, 7, 8};

Vector sum = v1 + v2;
Vector diff = v1 - v2;
int product = v1 * v2;

std::string messages[3] = {"Сумма: ", "Разница: ", "Произведение: "};
Vector* results[3] = {&sum, &diff, nullptr};
int product_result[1] = {product};

for (std::size_t i = 0; i < 3; i++) {
std::cout
Елдос Казыбек
Елдос Казыбек
7 794
Мансур Палванов Спасибо большое за вашу работу