From 860b536038b161d1d24028f00030902728824c18 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 3 Dec 2023 16:40:06 +0200 Subject: [w8] Solved simpler exercises --- week08/ex2.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 week08/ex2.cpp (limited to 'week08/ex2.cpp') diff --git a/week08/ex2.cpp b/week08/ex2.cpp new file mode 100644 index 0000000..1419132 --- /dev/null +++ b/week08/ex2.cpp @@ -0,0 +1,51 @@ +#include + +void tryResize(int*& numbers, size_t& numbersSize, size_t numbersCount) { + if (numbersCount < numbersSize) { + return; + } + + numbersSize *= 2; + int* biggerArray = new int[numbersSize]; + for (size_t i = 0; i < numbersCount; i++) { + biggerArray[i] = numbers[i]; + } + + delete[] numbers; + numbers = biggerArray; +} + +void addToEndOfArray(int value, int*& numbers, size_t& numbersSize, size_t& numbersCount) { + tryResize(numbers, numbersSize, numbersCount + 1); + numbers[numbersCount] = value; + numbersCount += 1; +} + +int main() { + int* numbers = new int[1]; + size_t numbersSize = 1; + size_t numbersCount = 0; + + int buffer; + std::cin >> buffer; + while(buffer != 0) { + addToEndOfArray(buffer, numbers, numbersSize, numbersCount); + std::cin >> buffer; + } + + size_t R; + std::cin >> R; + + int* rotated = new int[numbersCount]; + for (int i = 0; i < numbersCount; i++) { + rotated[(i + R + numbersCount) % numbersCount] = numbers[i]; + } + delete[] numbers; + + for (int i = 0; i < numbersCount; i++) { + std::cout << rotated[i] << " "; + } + std::cout << std::endl; + + delete[] rotated; +} -- cgit v1.2.3