diff options
3 files changed, 0 insertions, 196 deletions
| -rw-r--r-- | OperatorOverloading/Vector/Source.cpp | 14 | ||||
| -rw-r--r-- | OperatorOverloading/Vector/Vector.cpp | 145 | ||||
| -rw-r--r-- | OperatorOverloading/Vector/Vector.h | 37 |
diff --git a/OperatorOverloading/Vector/Source.cpp b/OperatorOverloading/Vector/Source.cpp deleted file mode 100644 index 02b3dd5..0000000 --- a/OperatorOverloading/Vector/Source.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include <iostream>
-#include "Vector.h"
-int main()
-{
-
-
- Vector v1(2);
-
- std::cin >> v1;
-
- std::cout << (v1);
-
-
-}
diff --git a/OperatorOverloading/Vector/Vector.cpp b/OperatorOverloading/Vector/Vector.cpp deleted file mode 100644 index 397cd46..0000000 --- a/OperatorOverloading/Vector/Vector.cpp +++ /dev/null @@ -1,145 +0,0 @@ -#include "Vector.h"
-
-Vector::Vector() :coordinates(nullptr), length(0)
-{}
-Vector::Vector(int len)
-{
- coordinates = new int[len];
- for (int i = 0; i < len; i++)
- coordinates[i] = 0;
- length = len;
-}
-void Vector::CopyFrom(const Vector& other)
-{
- coordinates = new int[other.length];
- for (int i = 0; i < other.GetLen(); i++)
- coordinates[i] = other.coordinates[i];
- length = other.length;
-}
-void Vector::Free()
-{
- delete[] coordinates;
- length = 0;
-}
-Vector::Vector(const Vector& other)
-{
- CopyFrom(other);
-}
-Vector& Vector::operator=(const Vector& other)
-{
- if (this != &other)
- {
- Free();
- CopyFrom(other);
- }
- return *this;
-}
-Vector::~Vector()
-{
- Free();
-}
-
-int& Vector::operator[](int index)
-{
- if (index < length)
- return coordinates[index];
- else
- throw 0;
-}
-void Vector::print()
-{
- std::cout << '(';
- for (int i = 0; i < length; i++)
- std::cout << coordinates[i]<<" ";
- std::cout <<')' <<std::endl;
-}
-
-int Vector::GetLen() const
-{
- return length;
-}
-int Vector::GetAtIndex(int index) const
-{
- if (index<length)
- return coordinates[index];
- else
- return 0;
-}
-Vector& Vector::operator+=(const Vector& other)
-{
- if (GetLen() != other.GetLen())
- throw "Invalid operation";
- for (int i = 0; i < other.length; i++)
- coordinates[i] += other.coordinates[i];
- return *this;
-}
-
-Vector& Vector::operator-=(const Vector& other)
-{
- if (GetLen() != other.GetLen())
- throw "Invalid operation";
- for (int i = 0; i < other.length; ++i)
- coordinates[i] -= other.coordinates[i];
- return *this;
-}
-
-Vector& Vector::operator*=(int scalar)
-{
- for (int i = 0; i < length; i++)
- coordinates[i] *= scalar;
- return *this;
-}
-Vector operator+(const Vector& lhs,const Vector& rhs)
-{
- Vector temp(lhs);
- temp += rhs;
- return temp;
-}
-
-Vector operator-(const Vector& lhs, const Vector& rhs)
-{
- Vector temp(lhs);
- temp -= rhs;
- return temp;
-}
-
-int operator%(const Vector& lhs, const Vector& rhs)
-{
- int min = lhs.GetLen() < rhs.GetLen() ? lhs.GetLen() : rhs.GetLen();
- int result = 0;
- for (int i = 0; i < min; i++)
- result += lhs.GetAtIndex(i) * rhs.GetAtIndex(i);
- return result;
-}
-bool operator||(const Vector& lhs, const Vector& rhs)// a и b са перпендикулярни <-> a*K=b (K е константа).
-{
- double coeff = lhs.GetAtIndex(0) / rhs.GetAtIndex(0);
- for (int i = 1; i < lhs.GetLen(); i++)
- {
- if (lhs.GetAtIndex(i) == 0 || rhs.GetAtIndex(i) == 0)
- continue;
- double Newfirst = lhs.GetAtIndex(i);
- double Newcoeff = Newfirst / rhs.GetAtIndex(i);
- if (abs(Newcoeff-coeff)>0.01)
- return false;
- }
- return true;
-}
-bool operator|=(const Vector& lhs, const Vector& rhs)
-{
- return lhs%rhs == 0; //скаларното произведение на два успоредни вектора е 0.
-}
-
-std::ostream& operator<<(std::ostream& os, const Vector& v)
-{
- for (int i = 0; i < v.GetLen(); ++i)
- os << v.GetAtIndex(i) << " ";
- return os;
-}
-
-std::istream& operator>>(std::istream& ifs, Vector& v)
-{
- for (int i = 0; i < v.GetLen(); ++i)
- ifs >> v[i];
- return ifs;
-}
diff --git a/OperatorOverloading/Vector/Vector.h b/OperatorOverloading/Vector/Vector.h deleted file mode 100644 index 03969d8..0000000 --- a/OperatorOverloading/Vector/Vector.h +++ /dev/null @@ -1,37 +0,0 @@ -#include <iostream>
-class Vector
-{
-private:
- int* coordinates;
- int length;
- void CopyFrom(const Vector& other);
- void Free();
-public:
- Vector();
- Vector(int len);
-
- Vector(const Vector& other);
- Vector& operator=(const Vector& other);
- ~Vector();
-
- int GetLen() const;
-
- Vector& operator+=(const Vector& other);
- Vector& operator-=(const Vector& other);
- Vector& operator*=(int);
-
- friend std::ostream& operator<<(std::ostream&, const Vector& v);
- friend std::istream& operator>>(std::istream&, Vector& v);
-
- int GetAtIndex(int index) const;
- int& operator[](int index);// оператор за индексиране(като в масивите) vector a; a[4] -взима четвъртия кординат на вектора
- void print();
-};
-
-Vector operator+(const Vector& lhs, const Vector& rhs);// Събиране на два вектора
-Vector operator-(const Vector& lhs, const Vector& rhs);// Изваждане на два вектора
-
-int operator%(const Vector& lhs, const Vector& rhs); // Скаларно произведение на два вектора
-
-bool operator||(const Vector& lhs, const Vector& rhs); // Дали два вектора са успоредни
-bool operator|=(const Vector& lhs, const Vector& rhs); // Дали два вектора са перпендикулярни
|
