Jump to content

Задачи - ООП, Седмица 9, 15.04.2026

За решаване

Задача 1

(26.04.2026) Променено от "дата на производство" в "година на производство"

Реализирайте клас Locomotive, който съдържа:

За него реализирайте нужните селектори и мутатори.

Реализирайте и приятелски функции, чрез която съдържанието може да се прочете от поток и запише в поток. Нека записването в поток да следва следния шаблон:

Train #9999
+ Model: ZZZ
+ Manufacturer: ZZZ
+ Year of manufacture: 2000
- Length: 9999mm
- Engine cyllinders: 9999
- Multiple working: Yes

Задача 2

Реализирайте клас Vector, който съхранява неограничено количество от числа с плаваща запетая.

Реализирайте оператори:

За всички тези оператори реализирайте съотвените оператори за присвояване (+=, -=, ...). Ако единия вектор има повече елементи, нека те да се игнорират/оставят.

Задача 3

Реализирайте клас String, който съхранява низ с неограничен размер. Имплементирайте следните оператори:

Задача 4

Реализирайте клас Rover, който съхранява координатите на движещ се роувър. В началото роувъра започва в координати (0,0) и сочи напред (към (0,1))

Реализирайте следните оператори:

Реализирайте и съответните оператори за вход/изход от/към поток.

Задача 5

Реализирайте клас StringArray, който съхранява неограничено (и оразмеряемо) количество низове. Реализирайте нужните оператори и помощни класове, чрез които следния код е валиден:

(26.04.2026) Обновени конвертирания, така че примера да работи. Променени първите три размери.
StringArray s;
s[ Z(7) +++ Z(4) +++ Z(3) ] ("") (X("Hello")|"World") [ Z(4) +++ Z(5) +++ Z(1) ] ("!") [ Z(2) ] (X("Code")|"A"|"B");

В квадратните скоби се изреждат максимални размери на очаквани низове, разделени с +++. В кръглите скоби се подават низове, разделени с |. Класовете Z и X са класове, наименувани по ваш начин.

question Защо ни трябва експлицитното конвертиране? Защо числата винаги ги конвертираме експлицитно, а низовете само веднъж (когато са изредени повече от един)?

Тоест,

Финално, в s трябва да имаме низовете "", "Hell", "Wor", "!", "Code", "A", "B".

Ако ни се подаде низ с по-голям размер от очаквания, трябва да съхраним само броя знаци, които очакваме. Ако ни се подаде низ, който не очакваме, трябва да го игнорираме.