diff options
3 files changed, 0 insertions, 196 deletions
| -rw-r--r-- | Operator_overloading/Vector/Source.cpp | 14 | ||||
| -rw-r--r-- | Operator_overloading/Vector/Vector.cpp | 145 | ||||
| -rw-r--r-- | Operator_overloading/Vector/Vector.h | 37 |
diff --git a/Operator_overloading/Vector/Source.cpp b/Operator_overloading/Vector/Source.cpp deleted file mode 100644 index c2e3c70..0000000 --- a/Operator_overloading/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/Operator_overloading/Vector/Vector.cpp b/Operator_overloading/Vector/Vector.cpp deleted file mode 100644 index 5059a66..0000000 --- a/Operator_overloading/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/Operator_overloading/Vector/Vector.h b/Operator_overloading/Vector/Vector.h deleted file mode 100644 index 9026d73..0000000 --- a/Operator_overloading/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); // Дали два вектора са перпендикулярни |
