Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
2 files changed, 56 insertions, 0 deletions
-rw-r--r--src/teaching/oop-2023/index.md1
-rw-r--r--src/teaching/oop-2023/week3/index.md55
diff --git a/src/teaching/oop-2023/index.md b/src/teaching/oop-2023/index.md
index a7fa78b..1a03672 100644
--- a/src/teaching/oop-2023/index.md
+++ b/src/teaching/oop-2023/index.md
@@ -16,3 +16,4 @@
|-------|----|---------|
|1 |22.02.2024|[Организационно](./week1/organization.html?a) \|\| [Основни добри софтуерни практики](./week1/good-software.html?a) \|\| [Задачи](./week1/) \|\| [Решения](https://github.com/Syndamia/oop-2023-solutions/tree/main/week01) \|\| [GitHub classroom](https://classroom.github.com/a/UPJOzHty)|
|2 |29.02.2024|[Задачи](./week2/) \|\| [GitHub classroom](https://classroom.github.com/a/3qPsfyyI)|
+|3 |07.03.2024|[Задачи](./week3/)|
diff --git a/src/teaching/oop-2023/week3/index.md b/src/teaching/oop-2023/week3/index.md
new file mode 100644
index 0000000..9b7a3e6
--- /dev/null
+++ b/src/teaching/oop-2023/week3/index.md
@@ -0,0 +1,55 @@
+# Задачи - ООП, Седмица 3, 07.03.2024
+
+<!-- GitHub classroom: [classroom.github.com/a/3qPsfyyI](https://classroom.github.com/a/3qPsfyyI) -->
+
+## Преговорни
+
+### Задача 1 - Структури
+
+Имплементирайте структура `LightBulb`, която запазва идентифициращите данни за една крушка:
+
+- диаметър и дължина, и двете целочислени стойности
+- тип, низ с максимална дължина от 100 знака
+- серия, главна буква на латиница
+
+### Задача 2 - Капсулация
+
+Имплементирайте структура `Alarm`, която съдържа скрити следните данни:
+
+- име на модел, низ с максимална дължина от 1024 знака
+- пин код, целочислено число
+- ревизия на модела, число с плаваща запетая
+
+За всяка данна трябва да създадете съответните get-ъри и set-ъри, публични член-функции които съответно връщат и записват всяка от изброените скрити стойности.
+
+При set-ърите имплементирайте следните проверки:
+
+- името на модела може да има само главни букви
+- пин кода трябва да бъде 4 цифри (нули са позволени)
+- ревизията трябва да бъде положително число
+
+### Задача 3 - Капсулация с динамична памет
+
+Имплементирайте структура `Person`, която запазва двете имена на човек, възраст като целочислено число и неговия имейл.
+Имената и имейла могат да имат произволна дължина.
+
+Направете конструктор, който приема възрастта и тези три низа, и копира стойностите им в динамичната памет.
+Също напишете и деструктор, който коректно трие нужните данни.
+
+### Задача 4 - Динамично-заделени структури в други структури
+
+Имплементирайте структура `Bus`, която запазва публично капацитета хора и километража на един автобус.
+
+Имплементирайте структура `BusWarehouse`, която запазва динамично-заделен масив от автобуси.
+Имплементирайте конструктор, който само инициализира нужните данни, и деструктор който трие каквото трябва.
+
+Имплементирайте член-функция `AddBus`, която добавя автобус в инстанция на `BusWarehouse`.
+Може да добавят произволен брой автобуси, тоест вътрешния динамичен масив трябва да променя размера си.
+
+## Лесни задачи
+
+*Ще бъдат попълнени в бъдеще*
+
+## Трудни задачи
+
+*Ще бъдат попълнени в бъдеще*