diff options
| Commit | 8690e0df08702c559763756782e9429c515a6c5d (patch) | |
|---|---|---|
| Author | 2026-04-07 21:57:58 +0300 | |
| Committer | 2026-04-07 21:57:58 +0300 | |
| Files | c7117a88aa44c95f2ef74143eb923b9cf9df4640 /src | |
| syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.tar syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.tar.gz syndamia.com-8690e0df08702c559763756782e9429c515a6c5d.zip | ||
| Parent | 5dedf943b42eec21caa54d9eb7057b613d3dc48b (diff) | |
feat(teaching/oop-2025/w08): Add exercises
3 files changed, 84 insertions, 0 deletions
| -rw-r--r-- | src/teaching/oop-2025/week08/img/formulas.png | bin | 0 -> 29252 bytes | |||
| -rw-r--r-- | src/teaching/oop-2025/week08/index.du | 80 | ||||
| -rw-r--r-- | src/teaching/oop-2025/week08/tex/formulas.tex | 4 |
diff --git a/src/teaching/oop-2025/week08/img/formulas.png b/src/teaching/oop-2025/week08/img/formulas.png Binary files differnew file mode 100644 index 0000000..3f48e44 --- /dev/null +++ b/src/teaching/oop-2025/week08/img/formulas.png diff --git a/src/teaching/oop-2025/week08/index.du b/src/teaching/oop-2025/week08/index.du new file mode 100644 index 0000000..7b3b7e3 --- /dev/null +++ b/src/teaching/oop-2025/week08/index.du @@ -0,0 +1,80 @@ +# Задачи - ООП, Седмица 8, 08.04.2026 + +'define expected-reading 3 min +'define created 07 April 2026 +'define edited 07 April 2026 +[$pagenav] + +## За решаване + +### Задача 1 + +.warn +За всеки клас имплементирайте [=голяма петица!=] +Всички методи трябва да достъпни и за константни обекти, когато е възможно. + +Реализирайте система за менажиране на многостепенни ракети. +След изтрелване на ракетата, най-долната "степен" се активира. +При изразходване на горивото, тя се откача от другите степени и следващата степен се активира. + +[image https://upload.wikimedia.org/wikipedia/commons/d/d6/Black_Brant.jpg]\n +[*В тази ракета, степените са оцветени по различен начин: бяло, червено и черно.*] + +Всяка степен си има: +.bulleted +- име, низ с максимална дължина от 100 символа +- височина в целочислени метри +- тежест в килограми +- тяга (lift force) в нютони +- време на горене в секунди + +Една степен изразходва горивото си за "време на горене" секунди, като във всяка секунда прилага ускорение на себе си и товара с "тяга" нютони. +Може да зачитаме праволинейно ускорение и да не изчисляваме промяната на количеството гориво. +Това означава, че можем да използваме следните формули за дадена степен: + +[image ./img/formulas.png] + +Където: +.bulleted +- [`a`] е ускорението, +- [`v[_0_]`] е началната скорост, + за първата степен тя ще е 0, + за втората тя ще е скоростта на първата степен, + на третата ще е скоростта на втората степен и так. нат. +- [`x`] е разстояние в метри. + +Степените се комбинират в ракета. +Всяка ракета си има име и неограничен брой степени. + +За една ракета имплементирайте методи, чрез които се намира: +.bulleted +- общата тежест на ракетата +- общата височина на ракетата +- финалната скорост на финалната степен +- общото разстояние което ракетата може да измине, в километри +- общото време в което ракетата ще гори + +Допълнително, имплементирайте методи [`Export`] и [`Import`], чрез които всички данни на една ракета се запазват или вземат в/от двоичен файл. + +Неограничено количество ракети и необвързани степени се съхраняват в хангари. +Имплементирайте методи за добавяне на степени в хангара и [*преместване*] на степени в ракети. + +Освен това имаме площадки от които ракети могат да се изтрелват. +Всяка площадка съдържа: +.bulleted +- име с максимална дължина от 250 символа +- максимална тежест на ракета, която поддържа +- максимална височина на ракета, която поддържа + +Финално, имаме космическа агенция, която съдържа неограничен брой хангари и площадки. +Всички хангари в космическата агенция могат да се експортират и импортират в един двоичен файл и всички площадки в един текстови файл. + +Реализирайте конзолен интерфейс, който поддържа командите: +.bulleted +- [`new_hangar`], която по подадени данни добавя нов хангар +- [`new_launch_site`], която по подадени данни добавя нова площадка +- [`new_rocket_stage`], която по подадени данни добавя нова степен в избран хангар. + Ако такъв не съществува, да се добави в последния добавен хангар. +- [`new_rocket`], която по подадени данни добавя нова ракета в хангар. + Степените ѝ трябва да са "пренесени" от хангар(и), [=не=] да се създадат наново. +- [`can_launch`], която по подадени данни за площадка и ракета, връща дали ракетата може да бъде изтреляна от площадката diff --git a/src/teaching/oop-2025/week08/tex/formulas.tex b/src/teaching/oop-2025/week08/tex/formulas.tex new file mode 100644 index 0000000..b64232f --- /dev/null +++ b/src/teaching/oop-2025/week08/tex/formulas.tex @@ -0,0 +1,4 @@ +% https://latexeditor.lagrida.com/ +a = & \frac{\text{liftForce}}{\text{totalWeight}} \\ +v = & v_0 + a \cdot \text{burnTime} \\ +x = & v_0 \cdot \text{burnTime} + \frac{a \cdot \text{burnTime}^2}{2} |