From 65010da9ed11920b57e79ff6b197c0c64ceeba69 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Tue, 27 Feb 2024 17:33:06 +0200 Subject: [w1] Added exercises and solutions to ex1 and 2 --- week01/Exercise2.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 week01/Exercise2.cpp (limited to 'week01/Exercise2.cpp') diff --git a/week01/Exercise2.cpp b/week01/Exercise2.cpp new file mode 100644 index 0000000..7d9d9b3 --- /dev/null +++ b/week01/Exercise2.cpp @@ -0,0 +1,46 @@ +#include + +struct DynamicIntArray { + int* arrayPointer; + int allocatedSize; + int elementsCount; +}; + +void resize(DynamicIntArray& dynarr) { + int* biggerArray = new int[dynarr.allocatedSize * 2]; + + for (int i = 0; i < dynarr.elementsCount; i++) { + biggerArray[i] = dynarr.arrayPointer[i]; + } + + delete[] dynarr.arrayPointer; + dynarr.arrayPointer = biggerArray; + dynarr.allocatedSize *= 2; +} + +void addToEnd(DynamicIntArray& dynarr, int newElem) { + if (dynarr.allocatedSize == dynarr.elementsCount) { + resize(dynarr); + } + + dynarr.arrayPointer[dynarr.elementsCount++] = newElem; +} + +int main() { + DynamicIntArray mydynarr = { new int[2], 2, 0 }; + addToEnd(mydynarr, 18); + addToEnd(mydynarr, 6); + addToEnd(mydynarr, 100); + addToEnd(mydynarr, -773); + addToEnd(mydynarr, 840); + addToEnd(mydynarr, -1000); + + resize(mydynarr); + + std::cout << mydynarr.allocatedSize << " " << mydynarr.elementsCount << std::endl; + for (int i = 0; i < mydynarr.elementsCount; i++) { + std::cout << mydynarr.arrayPointer[i] << " "; + } + + delete[] mydynarr.arrayPointer; +} -- cgit v1.2.3