Задачи - ООП, Седмица 8, 08.04.2026
За решаване
Задача 1
Реализирайте система за менажиране на многостепенни ракети. След изтрелване на ракетата, най-долната "степен" се активира. При изразходване на горивото, тя се откача от другите степени и следващата степен се активира.

В тази ракета, степените са оцветени по различен начин: бяло, червено и черно.
Всяка степен си има:
- име, низ с максимална дължина от 100 символа
- височина в целочислени метри
- тежест в килограми
- тяга (lift force) в нютони
- време на горене в секунди
Една степен изразходва горивото си за "време на горене" секунди, като във всяка секунда прилага ускорение на себе си и товара с "тяга" нютони. Може да зачитаме праволинейно ускорение и да не изчисляваме промяната на количеството гориво. Това означава, че можем да използваме следните формули за дадена степен:
Където:
-
aе ускорението, -
v0е началната скорост, за първата степен тя ще е 0, за втората тя ще е скоростта на първата степен, на третата ще е скоростта на втората степен и так. нат. -
xе разстояние в метри.
Степените се комбинират в ракета. Всяка ракета си има име и неограничен брой степени.
За една ракета имплементирайте методи, чрез които се намира:
- общата тежест на ракетата
- общата височина на ракетата
- финалната скорост на финалната степен
- общото разстояние което ракетата може да измине, в километри
- общото време в което ракетата ще гори
Допълнително, имплементирайте методи Export и Import, чрез които всички данни на една ракета се запазват или вземат в/от двоичен файл.
Неограничено количество ракети и необвързани степени се съхраняват в хангари. Имплементирайте методи за добавяне на степени в хангара и преместване на степени в ракети.
Освен това имаме площадки от които ракети могат да се изтрелват. Всяка площадка съдържа:
- име с максимална дължина от 250 символа
- максимална тежест на ракета, която поддържа
- максимална височина на ракета, която поддържа
Финално, имаме космическа агенция, която съдържа неограничен брой хангари и площадки. Всички хангари в космическата агенция могат да се експортират и импортират в един двоичен файл и всички площадки в един текстови файл.
Реализирайте конзолен интерфейс, който поддържа командите:
-
new_hangar, която по подадени данни добавя нов хангар -
new_launch_site, която по подадени данни добавя нова площадка -
new_rocket_stage, която по подадени данни добавя нова степен в избран хангар. Ако такъв не съществува, да се добави в последния добавен хангар. -
new_rocket, която по подадени данни добавя нова ракета в хангар. Степените ѝ трябва да са "пренесени" от хангар(и), не да се създадат наново. -
can_launch, която по подадени данни за площадка и ракета, връща дали ракетата може да бъде изтреляна от площадката
За всеки клас имплементирайте голяма петица!
Всички методи трябва да достъпни и за константни обекти, когато е възможно.