aboutsummaryrefslogtreecommitdiff
path: root/week08/ex2.cpp
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2023-12-03 16:40:06 +0200
committerSyndamia <kamen@syndamia.com>2023-12-03 16:40:06 +0200
commit860b536038b161d1d24028f00030902728824c18 (patch)
tree8880687c997c638a75d8fb5609b323e1905a3388 /week08/ex2.cpp
parentb7f2b4797f8578bc23141399cfd93d4f22fbc206 (diff)
downloadupp-2023-solutions-860b536038b161d1d24028f00030902728824c18.tar
upp-2023-solutions-860b536038b161d1d24028f00030902728824c18.tar.gz
upp-2023-solutions-860b536038b161d1d24028f00030902728824c18.zip
[w8] Solved simpler exercises
Diffstat (limited to 'week08/ex2.cpp')
-rw-r--r--week08/ex2.cpp51
1 files changed, 51 insertions, 0 deletions
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 <iostream>
+
+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;
+}