From 7b19cabee8b08478f31f6e4594ed28e1d04e153c Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 10 May 2024 10:10:21 +0300 Subject: [w11] Solved exercises --- week11/Exercise07/Numbers.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 week11/Exercise07/Numbers.cpp (limited to 'week11/Exercise07/Numbers.cpp') diff --git a/week11/Exercise07/Numbers.cpp b/week11/Exercise07/Numbers.cpp new file mode 100644 index 0000000..db8f218 --- /dev/null +++ b/week11/Exercise07/Numbers.cpp @@ -0,0 +1,44 @@ +#include "Numbers.h" +#include "DynamicArray.hpp" + +int& Numbers::operator[](int index) { + if (index >= size) throw "Index out of bounds"; + + for (int i = 0; i < size; i++) { + if (elems[i] < index) { + return elems[i]; + } + } + return elems[0]; +} + +const int& Numbers::operator[](int index) const { + if (index >= size) throw "Index out of bounds"; + + for (int i = 0; i < size; i++) { + if (elems[i] < index) { + return elems[i]; + } + } + return elems[0]; +} + +Numbers& Numbers::operator+=(const Numbers& other) { + int* biggerElems = new int[other.allocated + allocated]; + for (int i = 0; i < other.size; i++) { + biggerElems[i] = other.elems[i]; + } + for (int i = 0; i < size; i++) { + biggerElems[other.size + i] = elems[i]; + } + delete[] elems; + elems = biggerElems; + size += other.size; + allocated += other.allocated; + + return *this; +} + +DynamicArray& Numbers::operator+=(const DynamicArray& other) { + return *this += (const Numbers&)other; +} -- cgit v1.2.3