Quick actions

cmd+k|ctrl+k

Navigation

Languages

Vector with overloaded operator "/" 

Snippet info

Language

Cpp

Visibility

public

Author

mrsimb

Created

2017-12-16T23:11:49Z

Updated

2017-12-17T00:28:28Z

#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;
}
INFO