diff options
1 files changed, 54 insertions, 50 deletions
| -rw-r--r-- | src/teaching/oop-2025/week01/index.du | 104 |
diff --git a/src/teaching/oop-2025/week01/index.du b/src/teaching/oop-2025/week01/index.du index 8279b83..10d9b08 100644 --- a/src/teaching/oop-2025/week01/index.du +++ b/src/teaching/oop-2025/week01/index.du @@ -1,23 +1,23 @@ -# Задачи - ООП, Седмица 1, 18.02.2026 +'def title Задачи - ООП, Седмица 1, 18.02.2026 +'def desc Условията на задачите за упражнение. -'define expected-reading 2 min -'define created 17 February 2026 -'define edited 22 February 2026 -[$pagenav] +# {title} -.warn Както винаги, [=НЕ=] може да използвате външни библиотеки и (почти) всичко от стандартната библиотека! +{pagenav 2 min;17 February 2026;22 February 2026} -.important [*(22.02.2026)*] По-подробни условия, оправени някои грешки в условията. +.warn Както винаги, {b НЕ} може да използвате външни библиотеки и (почти) всичко от стандартната библиотека! + +.important {i (22.02.2026)} По-подробни условия, оправени някои грешки в условията. ## За решаване ### Задача 1 -.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise01 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise01} Реализирайте следните функции: -```c++ +```cpp // Създава нова динамично-заделена матрица int** newMatrix(unsigned rows, unsigned cols); // Изтрива динамично-заделена матрица @@ -25,13 +25,14 @@ void deleteMatrix(int**& matrix, unsigned rows); // Запишете nullptr в // Връща сумата на всички елементи в матрицата int sumMatrix(const int** matrix, unsigned rows, unsigned cols); -Поставете техните имплементации във файл [`matrix.cpp`] и техните дефиниции в [`matrix.h`]. -Естествено, главната функция [=трябва да се намира извън [`matrix.cpp`]!=] +Поставете техните имплементации във файл {` matrix.cpp} и техните дефиниции в {` matrix.h}. +Естествено, главната функция {b трябва да се намира извън {` matrix.cpp}!} От входа получавате размерите и стойностите на две матрици с цели числа. Изкарайте разликата, между сумата на елементите на първата матрица и на втората матрица. -:table_2 +:table +:2 |= Вход |= Изход @@ -52,13 +53,14 @@ int sumMatrix(const int** matrix, unsigned rows, unsigned cols); .comment 45 - 163 = -118 + ### Задача 2 -.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise02 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise02} Реализирайте следните функции: -```c++ +```cpp // Сума на стойностите в elements int sum(const int* elements, unsigned length); // Средно аритметично на стойностите в elements @@ -70,17 +72,18 @@ int smallest(const int* elements, unsigned length); // Връща индекса на първото срещане на elementToSearch unsigned findIndex(const int* elements, unsigned length, int elementToSearch); -Поставете техните имплементации в [`arrmath.cpp`] и техните дефиниции в [`arrmath.h`]. +Поставете техните имплементации в {` arrmath.cpp} и техните дефиниции в {` arrmath.h}. Направете всички нужни проверки за коректност на аргументите на функциите! -От входа получавате цяло неотрицателно число [`N`] и след това [`N`] на брой цели числа. +От входа получавате цяло неотрицателно число {` N} и след това {` N} на брой цели числа. -Трябва да изкарате средното аритметично на всички елементи [*между*] най-малкия и най-големия (включително). +Трябва да изкарате средното аритметично на всички елементи {i между} най-малкия и най-големия (включително). Ако най-големия и/или най-малкия се среща повече от един път, използвайте неговото първо срещане. -Използвайте максимално функциите от [`arrmath`]! +Използвайте максимално функциите от {` arrmath}! -:table_2 +:table +:2 |= Вход |= Изход @@ -94,13 +97,14 @@ unsigned findIndex(const int* elements, unsigned length, int elementToSearch); |: 2.8 + ### Задача 3 -.solution-link [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise03 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week01/Exercise03} -Реализирайте следните функции във файлове [`stringHelpers.cpp`] и [`stringHelpers.h`]: +Реализирайте следните функции във файлове {` stringHelpers.cpp} и {` stringHelpers.h}: -```c++ +```cpp // Създава динамично-заделен низ по подадената дължина char* newString(unsigned length); // Създава динамично-заделен низ, копие на подадения низ @@ -111,9 +115,9 @@ char* concatStrings(const char* first, const char* second, const char* separator // Освобождава паметта на динамичо-заделен низ void deleteString(char*& string); // Запишете nullptr в string! -Реализирайте следните функции във файлове [`ioHelpers.cpp`] и [`ioHelpers.h`]: +Реализирайте следните функции във файлове {` ioHelpers.cpp} и {` ioHelpers.h}: -```c++ +```cpp // Прочита от потребителския вход цяло число между min и max включително, // като предоставя prompt преди въведената стойност // При невалидна стойност, пита пак за вход @@ -127,44 +131,44 @@ double readDouble(const char* prompt, double min, double max); // При невалидна стойност, пита пак за вход char* readString(const char* prompt); -За реализацията им използвайте [`stringHelpers`]! +За реализацията им използвайте {` stringHelpers}! Реализирате система за запазване на ученици. -Всеки ученик има две имена и оценка (по шестобалната система, между [`2.0`] и [`6.0`]). +Всеки ученик има две имена и оценка (по шестобалната система, между {` 2.0} и {` 6.0}). -Използвайки [`ioHelpers`], поискайте от потребителя брой ученици. +Използвайки {` ioHelpers}, поискайте от потребителя брой ученици. След това, за всеки ученик, поискайте неговото име, фамилия и оценка (поотделно). -За всеки ученик запазаете името му като един низ във формата [`"<ИМЕ> <ФАМИЛИЯ>"`]. +За всеки ученик запазаете името му като един низ във формата {` "<ИМЕ> <ФАМИЛИЯ>"}. Не запазвайте име и фамилия като отделни стойности! Накрая изкарайте данните за всички ученици. -[=Смесен вход/изход:=] [*(удебеления текст е изкаран от програмата, останалото е въведено от потребителя)*] +{b Смесен вход/изход:} {i (удебеления текст е изкаран от програмата, останалото е въведено от потребителя)} ``` -[=Number of students:=] 4 -[=First name:=] Ivan -[=Last name:=] Koprivan -[=Grade:=] 5.5 -[=First name:=] Dimitar -[=Last name:=] Stoianov -[=Grade:=] 3.15 -[=First name:=] Hari -[=Last name:=] Seldon -[=Grade:=] 6 -[=First name:=] Richard -[=Last name:=] Stallman -[=Grade:=] 4.53 -[=Ivan Koprivan has grade 5.5=] -[=Dimitar Stoianov has grade 3.15=] -[=Hari Seldon has grade 6=] -[=Richard Stallman has grade 4.53=] +{b Number of students:} 4 +{b First name:} Ivan +{b Last name:} Koprivan +{b Grade:} 5.5 +{b First name:} Dimitar +{b Last name:} Stoianov +{b Grade:} 3.15 +{b First name:} Hari +{b Last name:} Seldon +{b Grade:} 6 +{b First name:} Richard +{b Last name:} Stallman +{b Grade:} 4.53 +{b Ivan Koprivan has grade 5.5} +{b Dimitar Stoianov has grade 3.15} +{b Hari Seldon has grade 6} +{b Richard Stallman has grade 4.53} ## За самоподготовка -Пререшете следните задачи от УП [=без да гледате решенията=]: +Пререшете следните задачи от УП {b без да гледате решенията}: .bulleted -- [url ../../upp-2025/week13/#-21 Седмица 13, Задача 21] -- [url ../../upp-2025/week10/#-7 Седмица 10, Задача 7] -- [url ../../upp-2025/week12/#-6 Седмица 12, Задача 6] +- {url Седмица 13, Задача 21;../../upp-2025/week13/#-21} +- {url Седмица 10, Задача 7;../../upp-2025/week10/#-7} +- {url Седмица 12, Задача 6;../../upp-2025/week12/#-6} |