aboutsummaryrefslogtreecommitdiff
path: root/week08/ex4.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'week08/ex4.cpp')
-rw-r--r--week08/ex4.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/week08/ex4.cpp b/week08/ex4.cpp
new file mode 100644
index 0000000..9ca4227
--- /dev/null
+++ b/week08/ex4.cpp
@@ -0,0 +1,45 @@
+#include <iostream>
+
+void resize(int*& numbers, size_t& numbersSize) {
+ int* newArr = new int[numbersSize * 2];
+ for (int i = 0; i < numbersSize; i++) {
+ newArr[i] = numbers[i];
+ }
+
+ delete[] numbers;
+ numbers = newArr;
+ numbersSize *= 2;
+}
+
+int main() {
+ size_t numbersSize = 4;
+ int* numbers = new int[numbersSize];
+
+ size_t even = 0, odd = 1;
+ int buf;
+ std::cin >> buf;
+ while (buf != 0) {
+ if (even < numbersSize) {
+ numbers[even] = buf;
+ even += 2;
+ }
+ else if (odd < numbersSize) {
+ numbers[odd] = buf;
+ odd += 2;
+ }
+ else {
+ resize(numbers, numbersSize);
+ continue;
+ }
+ std::cin >> buf;
+ }
+
+ for (size_t i = 0; i < numbersSize; i++) {
+ if (numbers[i] != 0) {
+ std::cout << numbers[i] << " ";
+ }
+ }
+ std::cout << std::endl;
+
+ delete[] numbers;
+}