diff --git a/homework01/fran/CMakeLists.txt b/homework01/fran/CMakeLists.txt new file mode 100644 index 0000000..40f28a7 --- /dev/null +++ b/homework01/fran/CMakeLists.txt @@ -0,0 +1,3 @@ +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -std=c++14") + +add_executable(vector vector.h vector.cc vector_tests.cc) diff --git a/homework01/fran/vector.cc b/homework01/fran/vector.cc new file mode 100644 index 0000000..18ce702 --- /dev/null +++ b/homework01/fran/vector.cc @@ -0,0 +1,24 @@ +#include "vector.h" + +Vector::Vector(): Vector(0, 0){} + +Vector::Vector(int x, int y): + mX(x), + mY(y) +{} + +const int Vector::GetX() +{ + return mX; +} + +const int Vector::GetY() +{ + return mY; +} + +void Vector::Add(const Vector& vector) +{ + mX += vector.mX; + mY += vector.mY; +} \ No newline at end of file diff --git a/homework01/fran/vector.h b/homework01/fran/vector.h new file mode 100644 index 0000000..f007861 --- /dev/null +++ b/homework01/fran/vector.h @@ -0,0 +1,39 @@ +#include + +class Vector +{ +public: + Vector(); + Vector(int x, int y); + + bool operator==(const Vector& rhs) const + { + return mX == rhs.mX && mY == rhs.mY; + } + + Vector operator+(const Vector& rhs) const + { + return Vector(mX + rhs.mX, mY + rhs.mY); + } + + Vector& operator+=(const Vector& rhs) + { + mX += rhs.mX; + mY += rhs.mY; + return *this; + } + + friend std::ostream& operator<<(std::ostream& stream, const Vector& rhs) + { + stream << "x:" << rhs.mX << " y:" << rhs.mY; + return stream; + } + + const int GetX(); + const int GetY(); + void Add(const Vector&); + +private: + int mX; + int mY; +}; \ No newline at end of file diff --git a/homework01/fran/vector_tests.cc b/homework01/fran/vector_tests.cc new file mode 100644 index 0000000..97c079f --- /dev/null +++ b/homework01/fran/vector_tests.cc @@ -0,0 +1,38 @@ +#include "vector.h" + +#include +#include + +int main() +{ +#ifdef NDEBUG +#error Compile the code in debug mode! +#endif + + Vector v1; + Vector v2(5, 6); + + assert(v2.GetX() == 5); + assert(v2.GetY() == 6); + + v1 = v2; + assert(v1.GetX() == 5); + assert(v1.GetY() == 6); + assert(v1 == v2); + + Vector v3(1, 2); + v1.Add(v3); + assert(v1.GetX() == 6); + assert(v1.GetY() == 8); + + v3 = v2 + Vector(1, 1); + assert(v3.GetX() == 6); + assert(v3.GetY() == 7); + + v3 += v3; + assert(v3.GetX() == 12); + assert(v3.GetY() == 14); + + v3 = v1 + v2; + std::cout << v1 << " + " << v2 << " = " << v3 << std::endl; +} \ No newline at end of file