Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
01.11.2025
Размер:
2.63 Кб
Скачать
#include <iostream>
#include <locale>
#include <vector>
using namespace std;

class my_vector {
    vector<double> coords;
public:
    my_vector(int n = 0) : coords(n, 0) {}
    
    my_vector(const vector<double>& v) : coords(v) {}
    
    // а) Присваивание
    my_vector& operator=(const my_vector& other) {
        coords = other.coords;
        return *this;
    }
    
    // б) Сложение
    my_vector operator+(const my_vector& other) const {
        my_vector result(coords.size());
        for (size_t i = 0; i < coords.size(); i++) {
            result.coords[i] = coords[i] + other.coords[i];
        }
        return result;
    }
    
    // в) Сложение с присваиванием
    my_vector& operator+=(const my_vector& other) {
        for (size_t i = 0; i < coords.size(); i++) {
            coords[i] += other.coords[i];
        }
        return *this;
    }
    
    // г) Умножение на число
    my_vector operator*(double scalar) const {
        my_vector result(coords.size());
        for (size_t i = 0; i < coords.size(); i++) {
            result.coords[i] = coords[i] * scalar;
        }
        return result;
    }
    
    friend my_vector operator*(double scalar, const my_vector& v);
    
    // д) Скалярное произведение
    double operator*(const my_vector& other) const {
        double result = 0;
        for (size_t i = 0; i < coords.size(); i++) {
            result += coords[i] * other.coords[i];
        }
        return result;
    }
    
    // е) Индексирование
    double& operator[](int index) {
        return coords[index];
    }
    
    const double& operator[](int index) const {
        return coords[index];
    }
    
    void print() const {
        cout << "(";
        for (size_t i = 0; i < coords.size(); i++) {
            cout << coords[i];
            if (i < coords.size() - 1) cout << ", ";
        }
        cout << ")" << endl;
    }
};

my_vector operator*(double scalar, const my_vector& v) {
    return v * scalar;
}

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    my_vector v1({1, 2, 3});
    my_vector v2({4, 5, 6});
    
    cout << "v1 = "; v1.print();
    cout << "v2 = "; v2.print();
    
    my_vector v3 = v1 + v2;
    cout << "v1 + v2 = "; v3.print();
    
    double dot = v1 * v2;
    cout << "Скалярное произведение: " << dot << endl;
    
    v1[0] = 10;
    cout << "После v1[0] = 10: "; v1.print();
    
    return 0;
}
Соседние файлы в папке Лаба4