Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2025 / week04 / index.du
blob: 5c7e7f58e08d632b7875033c3db4c21367ae42af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'def title Задачи - ООП, Седмица 4, 11.03.2026
'def  desc Условията на задачите за упражнение.

# {title}

{pagenav 3 min;11 March 2026;11 March 2026}

.warn За всеки клас имплементирайте {b голяма четворка!}

## За решаване

### Задача 1

.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week04/Exercise01}

Реализирайте клас {` Train}, който съдържа брой вагони, брой места за пътници, брой приети пътници, брой спирки които е минал, брой спирки които му остават, цена на билет и печалба от билети.

Реализирайте селектори на всички тези параметри, конструктор с подадени стойности и публична член-функция {` ArriveAtStation}, която приема брой слизащи пътници и брой качващи се пътници.
Освен това реализирайте публична член-функция {` Print}, която изкарва всички стойности на класа.

### Задача 2

.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week04/Exercise02}

Реализирайте клас {` IntArray}, който съдържа указател към масив от {` int} елементи и капацитет.

Реализирайте публични член-функции:
.unordered
- {` At} която връща стойността по подаден индекс,
- {` Resize} която променя размера на масива по подаден такъв.
- {` Concat} която приема {` IntArray} обект и слепява всички негови елементи след тези в текущия

### Задача 3

.solution-link {url Решение;https://github.com/Syndamia/oop-2025-solutions/tree/main/Week04/Exercise03}

Реализирайте клас {` 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} обект, който е транспонираната матрица на текущата