Advertisement
dmkozyrev

Vector

Jan 12th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.23 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Vector
  6. {
  7.     int size;
  8.     double * values;
  9. public:
  10.     Vector(int n, double d = 0);
  11.     Vector(const Vector & v);
  12.     ~Vector();
  13.    
  14.     int getSize() const {return size;};
  15.     double & getVal(int) const;
  16.  
  17.     double & operator[](int index) const {return getVal(index);};
  18.     Vector & operator=(const Vector &);
  19.    
  20.     void show() const;
  21.     bool isEmpty() const {return (size==0);};
  22.    
  23.     void fill(const double & d){for(int i=0; i<size; values[i++]=d);};
  24.     void zeros(){fill(0);};
  25.     void ones(){fill(1);};
  26.    
  27.     friend Vector operator-(const Vector &);
  28.    
  29.     friend Vector operator-(const Vector &, const Vector &);
  30.     friend Vector operator-(const Vector &, const double &);
  31.     friend Vector operator-(const double &, const Vector &);
  32.    
  33.     friend Vector operator+(const Vector &, const Vector &);
  34.     friend Vector operator+(const Vector &, const double &);
  35.     friend Vector operator+(const double &, const Vector &);
  36. };
  37.  
  38. int main()
  39. {
  40.     Vector a(3, 1), b(3, -1);
  41.     for(int i=1; i<a.getSize(); ++i) a[i]=a[i-1]+1;
  42.     for(int i=1; i<b.getSize(); ++i) b[i]=b[i-1]-1;
  43.     cout << "Vector a = "; a.show();
  44.     cout << "Vector b = "; b.show();
  45.     Vector c = a + b;
  46.     cout << "Vector c = a + b = "; c.show();
  47.     double d = 5;
  48.    
  49.     c = a + d;
  50.     cout << "Vector c = a + " << d << " = "; c.show();
  51.    
  52.     c = d + a;
  53.     cout << "Vector c = " << d << " + a = "; c.show();
  54.    
  55.     c = b - a;
  56.     cout << "Vector c = b - a = "; c.show();
  57.    
  58.     c = b - d;
  59.     cout << "Vector c = b - " << d << " = "; c.show();
  60.    
  61.     c = d - b;
  62.     cout << "Vector c = " << d << " - b = "; c.show();
  63. }
  64.  
  65. Vector operator-(const Vector & v)
  66. {
  67.     Vector temp = v;
  68.     for(int i=0; i < temp.size; ++i)
  69.         temp[i]= -temp[i];
  70.     return temp;
  71. }
  72.    
  73. Vector operator-(const Vector & a, const Vector & b)
  74. {
  75.     return a + (-b);
  76. }
  77.  
  78. Vector operator-(const Vector & a, const double & d)
  79. {
  80.     return a + (-d);
  81. }
  82.  
  83. Vector operator-(const double & d, const Vector & a)
  84. {
  85.     return d + (-a);
  86. }
  87.  
  88. Vector operator+(const Vector & a, const Vector & b)
  89. {
  90.     bool aMax = a.size > b.size;
  91.     int maxSize = aMax ? a.size:b.size;
  92.     int minSize = aMax ? b.size:a.size;
  93.     Vector temp(maxSize);
  94.     for(int i = 0; i < minSize; ++i)
  95.         temp[i] = a[i] + b[i];
  96.     for(int i = minSize; i < maxSize; temp[i++] = aMax ? a[i]:b[i]);
  97.     return temp;
  98. }
  99.  
  100. Vector operator+(const Vector & v, const double & d)
  101. {
  102.     Vector temp(v);
  103.     if (!temp.isEmpty())
  104.         temp[0] += d;
  105.     return temp;
  106. }
  107.  
  108. Vector operator+(const double & d, const Vector & v)
  109. {
  110.     Vector temp(v);
  111.     if (!temp.isEmpty())
  112.         temp[temp.size-1] += d;
  113.     return temp;
  114. }
  115.  
  116. void Vector::show() const
  117. {
  118.     for (int i = 0; i < size; ++i)
  119.         cout << values[i] << " ";
  120.     cout << endl;
  121. }
  122.  
  123. double & Vector::getVal(int index) const
  124. {
  125.     if (index < 0) index = 0;
  126.     if (index >= size) index = size-1;
  127.     return values[index];
  128. }
  129.  
  130. Vector & Vector::operator=(const Vector & v)
  131. {
  132.     delete[] values;
  133.     size = v.size;
  134.     values = new double[size];
  135.     for(int i = 0; i < size; ++i)
  136.         values[i] = v.values[i];
  137.     return *this;
  138. }
  139.  
  140. Vector::Vector(int n, double d)
  141. {
  142.     size = n;
  143.     values = new double[size];
  144.     fill(d);
  145. }
  146.  
  147. Vector::Vector(const Vector & v)
  148. {
  149.     size = v.size;
  150.     values = new double[size];
  151.     for(int i = 0; i < size; ++i)
  152.         values[i] = v.values[i];
  153. }
  154.  
  155. Vector::~Vector()
  156. {
  157.     delete[] values;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement