diff options
| author | Syndamia <kamen@syndamia.com> | 2023-12-03 16:40:06 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2023-12-03 16:40:06 +0200 |
| commit | 860b536038b161d1d24028f00030902728824c18 (patch) | |
| tree | 8880687c997c638a75d8fb5609b323e1905a3388 /week08/ex4.cpp | |
| parent | b7f2b4797f8578bc23141399cfd93d4f22fbc206 (diff) | |
| download | upp-2023-solutions-860b536038b161d1d24028f00030902728824c18.tar upp-2023-solutions-860b536038b161d1d24028f00030902728824c18.tar.gz upp-2023-solutions-860b536038b161d1d24028f00030902728824c18.zip | |
[w8] Solved simpler exercises
Diffstat (limited to 'week08/ex4.cpp')
| -rw-r--r-- | week08/ex4.cpp | 45 |
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; +} |
