diff options
| author | Syndamia <kamen@syndamia.com> | 2024-02-27 17:33:06 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2024-02-27 17:33:06 +0200 |
| commit | 65010da9ed11920b57e79ff6b197c0c64ceeba69 (patch) | |
| tree | 7e6cba3ff86e1cd41adaea943858a464febb3d5e /week01/Exercise2.cpp | |
| parent | f366548e7cac90d44507c37975106a06fdd11bda (diff) | |
| download | oop-2023-solutions-65010da9ed11920b57e79ff6b197c0c64ceeba69.tar oop-2023-solutions-65010da9ed11920b57e79ff6b197c0c64ceeba69.tar.gz oop-2023-solutions-65010da9ed11920b57e79ff6b197c0c64ceeba69.zip | |
[w1] Added exercises and solutions to ex1 and 2
Diffstat (limited to 'week01/Exercise2.cpp')
| -rw-r--r-- | week01/Exercise2.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
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 <iostream> + +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; +} |
