Summary Files Commits Branches @commit @diff @stats
path: root / src
diff options
context:
space:
mode:
2 files changed, 68 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2025/index.du9
-rw-r--r--src/teaching/oop-2025/week04/index.du59
diff --git a/src/teaching/oop-2025/index.du b/src/teaching/oop-2025/index.du
index 2cc5491..1ca27ca 100644
--- a/src/teaching/oop-2025/index.du
+++ b/src/teaching/oop-2025/index.du
@@ -51,3 +51,12 @@
|:
[url ./week03 Задачи]
|| [url https://github.com/Syndamia/oop-2025-solutions/tree/main/Week03 Решения]
+
+|: 4
+|: 11.03.2026
+|: Голяма четворка
+
+|:
+|:
+|:
+[url ./week04 Задачи]
diff --git a/src/teaching/oop-2025/week04/index.du b/src/teaching/oop-2025/week04/index.du
new file mode 100644
index 0000000..330e8c4
--- /dev/null
+++ b/src/teaching/oop-2025/week04/index.du
@@ -0,0 +1,59 @@
+# Задачи - ООП, Седмица 4, 11.03.2026
+
+'define expected-reading 3 min
+'define created 11 March 2026
+'define edited 11 March 2026
+[$pagenav]
+
+.warn За всеки клас имплементирайте [=голяма четворка!=]
+
+## За решаване
+
+### Задача 1
+
+Реализирайте клас [`Train`], който съдържа брой вагони, брой места за пътници, брой приети пътници, брой спирки които е минал, брой спирки които му остават, цена на билет и печалба от билети.
+
+Реализирайте селектори на всички тези параметри, конструктор с подадени стойности и публична член-функция [`ArriveAtStation`], която приема брой слизащи пътници и брой качващи се пътници.
+Освен това реализирайте публична член-функция [`Print`], която изкарва всички стойности на класа.
+
+### Задача 2
+
+Реализирайте клас [`IntArray`], който съдържа указател към масив от [`int`] елементи и капацитет.
+
+Реализирайте публични член-функции:
+.unordered
+- [`At`] която връща стойността по подаден индекс,
+- [`Resize`] която променя размера на масива по подаден такъв.
+- [`Concat`] която приема [`IntArray`] обект и слепява всички негови елементи след тези в текущия
+
+### Задача 3
+
+Реализирайте клас [`String`], който съдържа низ [`char*`] и размер.
+Напомняме, че низа пак трябва да завършва на терминираща нула!
+
+Реализирайте конструктори:
+.unordered
+- по подразбиране, в който се запазва низа [`""`]
+- приемащ [`const char*`]
+- приемащ [`String`]
+
+Реализирайте публични член-функции:
+.unordered
+- селектор [`GetLength`], който връща размера на низа
+- константен селектор [`GetStr`], който връща константен указател към низа
+- [`Substring`] който връща нов [`String`] обект със съдържание, което е под-низ по подадените индекси
+- [`Concat`] който връща нов [`String`] обект със съдържание, което е слепения (конкатениран) низ между текущия и подадения [`String`]
+
+### Задача 4
+
+Реализирайте клас [`Matrix`], който съдържа матрица от реални числа и нейния размер.
+
+Реализирайте конструктор, който приема размери и масив и попълва матрицата от ляво на дясно, от горе на долу.
+
+Реализирайте член-функции:
+.unordered
+- [`InsertRow`], която приема индекс и масив от реални числа и вмъква елементите като нов ред в матрицата
+- [`InsertCol`], което приема индекс и масив от реални числа и вмъква елементите като нова колона в матрицата
+- [`Sum`], която приема втора матрица и връща [`Matrix`] обект, който е сумата на текущата и подадената матрица
+- [`Multiply`], която приема втора матрица и връща [`Matrix`] обект, който е умножението на текущата и подадената матрица (ред по стълб)
+- [`Transpose`], която връща [`Matrix`] обект, който е транспонираната матрица на текущата