aboutsummaryrefslogtreecommitdiff
path: root/week01/Exercise2.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2024-02-27 17:33:06 +0200
committerSyndamia <kamen@syndamia.com>2024-02-27 17:33:06 +0200
commit65010da9ed11920b57e79ff6b197c0c64ceeba69 (patch)
tree7e6cba3ff86e1cd41adaea943858a464febb3d5e /week01/Exercise2.cpp
parentf366548e7cac90d44507c37975106a06fdd11bda (diff)
downloadoop-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.cpp46
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;
+}