aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--week08/ex1.cpp23
-rw-r--r--week08/ex2.cpp51
-rw-r--r--week08/ex3.cpp35
-rw-r--r--week08/ex4.cpp45
4 files changed, 154 insertions, 0 deletions
diff --git a/week08/ex1.cpp b/week08/ex1.cpp
new file mode 100644
index 0000000..038e205
--- /dev/null
+++ b/week08/ex1.cpp
@@ -0,0 +1,23 @@
+#include <iostream>
+
+int main() {
+ unsigned int N;
+ std::cin >> N;
+
+ int* numbers = new int[N];
+ for (int i = 0; i < N; i++) {
+ std::cin >> numbers[i];
+ }
+
+ for (int i = 1; i < N; i += 2) {
+ std::cout << numbers[i] << " ";
+ }
+ std::cout << std::endl;
+
+ for (int i = 2; i < N; i += 3) {
+ std::cout << numbers[i] << " ";
+ }
+ std::cout << std::endl;
+
+ delete[] numbers;
+}
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;
+}
diff --git a/week08/ex3.cpp b/week08/ex3.cpp
new file mode 100644
index 0000000..ede248b
--- /dev/null
+++ b/week08/ex3.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+
+int main() {
+ size_t N;
+ std::cin >> N;
+
+ int** matrix = new int*[N];
+ for (int i = 0; i < N; i++) {
+ matrix[i] = new int[N];
+ }
+
+ for (int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++) {
+ std::cin >> matrix[i][j];
+ }
+ }
+
+ int* mult = new int[N];
+ for (int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++) {
+ mult[i] += matrix[0][i] * matrix[i][j];
+ }
+ }
+
+ for (int i = 0; i < N; i++) {
+ std::cout << mult[i] << " ";
+ }
+ std::cout << std::endl;
+
+ delete[] mult;
+ for (int i = 0; i < N; i++) {
+ delete[] matrix[i];
+ }
+ delete[] matrix;
+}
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;
+}