From c88ee1f6f99c2a4677257c6487c50c39f366fbe2 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 15:59:46 +0200 Subject: Update README.md --- Sem. 10/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index 213fb84..bcd343a 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -89,6 +89,8 @@ void f() - Да се напише функция, която приема такъв стринг и връща нов стринг с ТОЧНА ГОЛЕМИНА, в който всички цифри са цензурирани. (Всяко число е заменено с '*') - Да се напише функция, която приема стринг и връща два стринга с ТОЧНА големина. Първият да бъде съставен само от малките букви, а другият да бъде съставен само от главните букви. - Да се напише функция, която приема два сортирани масива от цели числа и поставя в първия масив елементите от двата масива, но в сортиран вид (приемаме, че в първия има достатъчно място). - + - Напишете програма, която приема от стандартния вход число N. След това се прочитат N реда и всеки ред започва с число M, което е дължината на реда. + - Да се напие функция, която обработва подадената матрица по следния начин: +Връща се нова матрица, за което е заделена точна големина. Първият ред е конкатенацията на последния ред с първия ред на подадената матрица. Вторият ред е конкатенацията на предпоследния ред с втория ред на подадената матрица.

Задачи

-- cgit v1.3.1-23-gd82d From 6542a8fcc86c671659510caeaccd6de673e9d560 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 16:00:03 +0200 Subject: Update README.md --- Sem. 10/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index bcd343a..d40f4b6 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -91,6 +91,6 @@ void f() - Да се напише функция, която приема два сортирани масива от цели числа и поставя в първия масив елементите от двата масива, но в сортиран вид (приемаме, че в първия има достатъчно място). - Напишете програма, която приема от стандартния вход число N. След това се прочитат N реда и всеки ред започва с число M, което е дължината на реда. - Да се напие функция, която обработва подадената матрица по следния начин: -Връща се нова матрица, за което е заделена точна големина. Първият ред е конкатенацията на последния ред с първия ред на подадената матрица. Вторият ред е конкатенацията на предпоследния ред с втория ред на подадената матрица. +Връща се нова матрица, за което е заделена точна големина. Първият ред е конкатенацията на последния ред с първия ред на подадената матрица. Вторият ред е конкатенацията на предпоследния ред с втория ред на подадената матрица и тн.

Задачи

-- cgit v1.3.1-23-gd82d From e2ea0c1c97ed0c74024135df6f94656e77e0a399 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 16:00:23 +0200 Subject: Update README.md --- Sem. 10/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index d40f4b6..0edc4ce 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -89,8 +89,7 @@ void f() - Да се напише функция, която приема такъв стринг и връща нов стринг с ТОЧНА ГОЛЕМИНА, в който всички цифри са цензурирани. (Всяко число е заменено с '*') - Да се напише функция, която приема стринг и връща два стринга с ТОЧНА големина. Първият да бъде съставен само от малките букви, а другият да бъде съставен само от главните букви. - Да се напише функция, която приема два сортирани масива от цели числа и поставя в първия масив елементите от двата масива, но в сортиран вид (приемаме, че в първия има достатъчно място). - - Напишете програма, която приема от стандартния вход число N. След това се прочитат N реда и всеки ред започва с число M, което е дължината на реда. - - Да се напие функция, която обработва подадената матрица по следния начин: + - Напишете програма, която приема от стандартния вход число N. След това се прочитат N реда и всеки ред започва с число M, което е дължината на реда. Да се напие функция, която обработва подадената матрица по следния начин: Връща се нова матрица, за което е заделена точна големина. Първият ред е конкатенацията на последния ред с първия ред на подадената матрица. Вторият ред е конкатенацията на предпоследния ред с втория ред на подадената матрица и тн.

Задачи

-- cgit v1.3.1-23-gd82d 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') 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 From f4922d0d2b761f502a004b2b69b8b9dc2fba574d Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 18:59:42 +0200 Subject: Update README.md --- Sem. 10/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index 0edc4ce..85eb93a 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -93,3 +93,13 @@ void f() Връща се нова матрица, за което е заделена точна големина. Първият ред е конкатенацията на последния ред с първия ред на подадената матрица. Вторият ред е конкатенацията на предпоследния ред с втория ред на подадената матрица и тн.

Задачи

+ +**Задача 1:** Решете 4-та задача от примерните, но приемете, че числата в масивите са в интервала [-100, 100]. + +**Задача 2:** Напишете функция, която приема масив от цели числа и цяло число и елемент на масива. Функцията да преподрежда елементите, така че всички по-малки елементи от подадения да са в ляво от него, а всички по-големи - в дясно. (Забележка: Задачата да се реши с помощта на допълнителен масив - същестува и решение без допълнителна памет (Hoare's partition, Lomuto partition и други), но то не се изисква) + +*Вход: [1, 5, 6, 3, 0, -1, 2, 9, 7] ,3* *Изход: [1, 0, 2, ,-1, 3, 6, 5, 9, 7]* + + +**Задача 3:** Напишете функция, която приема масив и връща масив от масиви, на който елементите му са всички непразни подмасиви на дадения. +*Вход: [1, 2, 3]* *Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * -- cgit v1.3.1-23-gd82d From 6e29f95290072a75b6884a74f30d09449ef9b085 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 19:00:03 +0200 Subject: Update README.md --- Sem. 10/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index 85eb93a..02c0d07 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -102,4 +102,6 @@ void f() **Задача 3:** Напишете функция, която приема масив и връща масив от масиви, на който елементите му са всички непразни подмасиви на дадения. -*Вход: [1, 2, 3]* *Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * +*Вход: [1, 2, 3] * + +* Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * -- cgit v1.3.1-23-gd82d From 5681131005fb10782ff6326328cc5e4697e10162 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 19:00:17 +0200 Subject: Update README.md --- Sem. 10/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index 02c0d07..3f2a5a1 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -102,6 +102,7 @@ void f() **Задача 3:** Напишете функция, която приема масив и връща масив от масиви, на който елементите му са всички непразни подмасиви на дадения. + *Вход: [1, 2, 3] * -* Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * +*Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * -- cgit v1.3.1-23-gd82d From 26416c0e9bd8705b1a1fba8b19ee0633b60ba305 Mon Sep 17 00:00:00 2001 From: Angel Dimitriev Date: Wed, 22 Dec 2021 19:00:30 +0200 Subject: Update README.md --- Sem. 10/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Sem. 10') diff --git a/Sem. 10/README.md b/Sem. 10/README.md index 3f2a5a1..7a0b14e 100644 --- a/Sem. 10/README.md +++ b/Sem. 10/README.md @@ -103,6 +103,6 @@ void f() **Задача 3:** Напишете функция, която приема масив и връща масив от масиви, на който елементите му са всички непразни подмасиви на дадения. -*Вход: [1, 2, 3] * +*Вход: [1, 2, 3]* -*Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3] * +*Изход: [1], [2], [3], [1, 2], [2, 3], [1, 3], [1, 2, 3]* -- cgit v1.3.1-23-gd82d