From 5bb68053ebcb5eae7f756b11672326e601c59da6 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 18:52:10 +0200 Subject: Create example4.cpp --- Sem. 10/example4.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 Sem. 10/example4.cpp (limited to 'Sem. 10/example4.cpp') diff --git a/Sem. 10/example4.cpp b/Sem. 10/example4.cpp new file mode 100644 index 0000000..8d2105e --- /dev/null +++ b/Sem. 10/example4.cpp @@ -0,0 +1,85 @@ +#include +using namespace std; + + +unsigned input(int**& matrix, int*& sizes) +{ + unsigned N; + cin >> N; + + matrix = new int*[N]; + sizes = new int[N]; + + for (unsigned i = 0; i < N; i++) + { + unsigned currentRowSize; + cin >> currentRowSize; + + matrix[i] = new int[currentRowSize]; + sizes[i] = currentRowSize; + + for (unsigned j = 0; j < currentRowSize; j++) + cin >> matrix[i][j]; + } + + return N; +} + + +int* concat(const int* row1, unsigned row1Size, const int* row2, unsigned row2Size) +{ + int* result = new int[row1Size + row2Size]; + + for (unsigned i = 0; i < row2Size; i++) + result[i] = row2[i]; + + for (unsigned i = 0; i < row1Size; i++) + result[row2Size + i] = row1[i]; + + return result; +} + +void freeMatrix(int** matrix, unsigned rowsSize) +{ + for (int i = 0; i < rowsSize; i++) + delete[] matrix[i]; + delete[] matrix; +} + +void task(int** matrix, unsigned N, int* sizes) +{ + unsigned resultRowsCount = (N + 1) / 2; + int** resultMatrix = new int*[resultRowsCount]; + + int* resultSizes = new int[resultRowsCount]; + + for (unsigned i = 0; i < resultRowsCount; i++) + { + resultSizes[i] = sizes[i] + sizes[N - i - 1]; + resultMatrix[i] = concat(matrix[i], sizes[i], matrix[N - i - 1], sizes[N - i - 1]); + } + + //print + for (unsigned i = 0; i < resultRowsCount; i++) + { + for (unsigned j = 0; j < resultSizes[i]; j++) + cout << resultMatrix[i][j] << " "; + cout << endl; + } + + delete[] resultSizes; + freeMatrix(resultMatrix, resultRowsCount); + + delete[] sizes; + freeMatrix(matrix, N); +} + +int main() +{ + int** matrix; + int* sizes; + + unsigned N = input(matrix, sizes); //not sure if I need this func + + task(matrix, N, sizes); +} -- cgit v1.3.1-23-gd82d