Summary Files Commits Branches @commit @diff @stats
path: root / src / teaching / oop-2025 / week04 / index.du
blob: 67f083e5406ecc109838673b8334c92fe9d25a39 (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
# Задачи - ООП, Седмица 4, 11.03.2026

'define expected-reading 3 min
'define created 11 March 2026
'define edited 11 March 2026
[$pagenav]

.warn За всеки клас имплементирайте [=голяма четворка!=]

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

### Задача 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`] обект, който е транспонираната матрица на текущата