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/ex1.cpp | 23 +++++++++++++++++++++++ week08/ex2.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ week08/ex3.cpp | 35 +++++++++++++++++++++++++++++++++++ week08/ex4.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 week08/ex1.cpp create mode 100644 week08/ex2.cpp create mode 100644 week08/ex3.cpp create mode 100644 week08/ex4.cpp 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 + +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 + +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 + +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 + +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; +} -- cgit v1.2.3