#include <iostream>
using namespace std;
class Vector {
private:
int length;
public:
double * data;
Vector(int length, double value = 0) {
this->length = length;
this->data = new double[length];
for (int i = 0; i < length; i++) {
this->data[i] = value;
}
}
~Vector() {
delete[] this->data;
}
// Деление вектора на число.
const Vector operator/(double num) {
int length = this->length;
Vector v = Vector(length);
for (int i = 0; i < length; i++) {
v.data[i] = this->data[i] / num;
}
return v;
}
// Деление вектора на вектор.
// Добавил простой обход проблемы, когда делишь векторы разной длины,
// например: Vector(3) / Vector(5), Vector(5) / Vector(3)
// Сделал так, что цикл идет по минимальной длине из двух векторов
const Vector operator/(Vector & v2) {
int length = this->length;
int v2Length = v2.getLength();
int minLength = (length < v2Length) ? length : v2Length;
// Получаем копию данного вектора, поделив его на 1
Vector v = *this / 1;
for (int i = 0; i < minLength; i++) {
v.data[i] = v.data[i] / v2.data[i];
}
return v;
}
int getLength() {
return this->length;
}
void print() {
int length = this->length;
int lastIndex = length - 1;
cout << "[";
for (int i = 0; i < length; i++) {
cout << this->data[i];
if (i < lastIndex) {
cout << ", ";
}
}
cout << "]";
}
};
int main() {
Vector v1 = Vector(3);
v1.data[0] = 1;
v1.data[1] = 2;
v1.data[2] = 3;
v1.print();
Vector v2 = v1 / 2;
v2.print();
Vector v3 = v1 / v2;
v3.print();
return 0;
}