Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2025 / week01 / index.du
diff options
context:
space:
mode:
1 files changed, 54 insertions, 50 deletions
-rw-r--r--src/teaching/oop-2025/week01/index.du104
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}