diff options
| Commit | b213ea1c47183e1fd7a8e322d2081a39de9e2476 (patch) | |
|---|---|---|
| Author | 2024-02-29 16:12:33 +0200 | |
| Committer | 2024-02-29 16:12:33 +0200 | |
| Files | 5859174912ceb22093afa954d49d548ed88711e6 | |
| syndamia.com-b213ea1c47183e1fd7a8e322d2081a39de9e2476.tar syndamia.com-b213ea1c47183e1fd7a8e322d2081a39de9e2476.tar.gz syndamia.com-b213ea1c47183e1fd7a8e322d2081a39de9e2476.zip | ||
| Parent | a0ed1f8c987b514b95eb5110efced612034d433c (diff) | |
[te/oop-2023/w3] Added revision exercises
2 files changed, 56 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2023/index.md | 1 | ||||
| -rw-r--r-- | src/teaching/oop-2023/week3/index.md | 55 |
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`. +Може да добавят произволен брой автобуси, тоест вътрешния динамичен масив трябва да променя размера си. + +## Лесни задачи + +*Ще бъдат попълнени в бъдеще* + +## Трудни задачи + +*Ще бъдат попълнени в бъдеще* |