Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class Vector
- {
- int size;
- double * values;
- public:
- Vector(int n, double d = 0);
- Vector(const Vector & v);
- ~Vector();
- int getSize() const {return size;};
- double & getVal(int) const;
- double & operator[](int index) const {return getVal(index);};
- Vector & operator=(const Vector &);
- void show() const;
- bool isEmpty() const {return (size==0);};
- void fill(const double & d){for(int i=0; i<size; values[i++]=d);};
- void zeros(){fill(0);};
- void ones(){fill(1);};
- friend Vector operator-(const Vector &);
- friend Vector operator-(const Vector &, const Vector &);
- friend Vector operator-(const Vector &, const double &);
- friend Vector operator-(const double &, const Vector &);
- friend Vector operator+(const Vector &, const Vector &);
- friend Vector operator+(const Vector &, const double &);
- friend Vector operator+(const double &, const Vector &);
- };
- int main()
- {
- Vector a(3, 1), b(3, -1);
- for(int i=1; i<a.getSize(); ++i) a[i]=a[i-1]+1;
- for(int i=1; i<b.getSize(); ++i) b[i]=b[i-1]-1;
- cout << "Vector a = "; a.show();
- cout << "Vector b = "; b.show();
- Vector c = a + b;
- cout << "Vector c = a + b = "; c.show();
- double d = 5;
- c = a + d;
- cout << "Vector c = a + " << d << " = "; c.show();
- c = d + a;
- cout << "Vector c = " << d << " + a = "; c.show();
- c = b - a;
- cout << "Vector c = b - a = "; c.show();
- c = b - d;
- cout << "Vector c = b - " << d << " = "; c.show();
- c = d - b;
- cout << "Vector c = " << d << " - b = "; c.show();
- }
- Vector operator-(const Vector & v)
- {
- Vector temp = v;
- for(int i=0; i < temp.size; ++i)
- temp[i]= -temp[i];
- return temp;
- }
- Vector operator-(const Vector & a, const Vector & b)
- {
- return a + (-b);
- }
- Vector operator-(const Vector & a, const double & d)
- {
- return a + (-d);
- }
- Vector operator-(const double & d, const Vector & a)
- {
- return d + (-a);
- }
- Vector operator+(const Vector & a, const Vector & b)
- {
- bool aMax = a.size > b.size;
- int maxSize = aMax ? a.size:b.size;
- int minSize = aMax ? b.size:a.size;
- Vector temp(maxSize);
- for(int i = 0; i < minSize; ++i)
- temp[i] = a[i] + b[i];
- for(int i = minSize; i < maxSize; temp[i++] = aMax ? a[i]:b[i]);
- return temp;
- }
- Vector operator+(const Vector & v, const double & d)
- {
- Vector temp(v);
- if (!temp.isEmpty())
- temp[0] += d;
- return temp;
- }
- Vector operator+(const double & d, const Vector & v)
- {
- Vector temp(v);
- if (!temp.isEmpty())
- temp[temp.size-1] += d;
- return temp;
- }
- void Vector::show() const
- {
- for (int i = 0; i < size; ++i)
- cout << values[i] << " ";
- cout << endl;
- }
- double & Vector::getVal(int index) const
- {
- if (index < 0) index = 0;
- if (index >= size) index = size-1;
- return values[index];
- }
- Vector & Vector::operator=(const Vector & v)
- {
- delete[] values;
- size = v.size;
- values = new double[size];
- for(int i = 0; i < size; ++i)
- values[i] = v.values[i];
- return *this;
- }
- Vector::Vector(int n, double d)
- {
- size = n;
- values = new double[size];
- fill(d);
- }
- Vector::Vector(const Vector & v)
- {
- size = v.size;
- values = new double[size];
- for(int i = 0; i < size; ++i)
- values[i] = v.values[i];
- }
- Vector::~Vector()
- {
- delete[] values;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement