Поправителен писмен изпит ПЪРВИ поток - вариант Б
Моля, предайте всички файлове с код в ZIP архив със следното име:
groupX_varY_FN.zip
където X е номерът на групата, с която посещавате упражнения, Y е номерът на варианта, а FN е факултетния Ви номер.
Не включвайте в ZIP архива компилирани, изпълними, обектни, дебъг, проектни или всякакви други файлове!
Задача 1. Разглеждаме вариант на структурата стек, наречен „стек с допълване“, в който има допълнителна операция, която позволява в стекът да се допълни от дъното му с подаден масив от n елемента
а) (0,50) Да се реализира шаблон FillStack, която прави динамична реализация на „стек с допълване“. Позволено е използването на структурите от данни, взимани на лекции, както и стандартните шаблони от STL, но дефинираният шаблон трябва да поддържа само стандартните за стек операции и допълнителната операция “допълване”, както и селектор за брой елементи в стека.
б) (0,50) Работното време на служител, обработващ стек от документи, е от 9 до 17 часа. Да се реализира хетерогенен списък, който съдържа два вида документи:
-
високоприоритетен документ, за който се пазят име (низ с произволна дължина), точен час на добавяне отгоре на стека (час и минути в рамките на работното време), и време, необходимо за обработка (цяло число минути);
-
нископриоритетен документ, за който освен данните за високоприоритетен документ, се пази и положително цяло число n, указващо колко от следващите документи след него се “залепват” за него и се добавят заедно с него на дъното на стека.
в) (0,25) За списъка да се реализира метод, който добавя документ на подходящо място в списъка, така че документите в него да са подредени във възходящ ред по час на добавяне.
г) (1,00) Да се реализира функция, която приема хетерогенен списък от горния вид и с помощта на шаблона FillStack прави симулация на работата на служителя, като при всяко едно от следните събития се извежда информация за името на съответния документ, текущ час и дължина на стека след събитието:
-
поставяне на документ на стека
-
допълване на стека с документи в дъното му
-
начало на обработка на документ (при това събитие документът се вади от стека)
-
край на обработка на документ
Когато нископриоритетен документ се поставя на стека, той винаги се поставя на дъното, заедно със следващите n документа от списъка, без да взема под внимание точния час, в който те са щели да бъдат добавени в стека при нормални обстоятелства. Упътване: не е нужно и стекът да е хетерогенен.
Примерен вход:
Име |
Час |
Време за обработка |
Приоритет |
Urgent Report |
9:10 |
35 мин. |
висок |
Weekly Meeting Notes |
9:20 |
30 мин. |
висок |
Financial Report |
9:40 |
20 мин. |
нисък, добавя още 1 документ |
Employee Feedback |
10:10 |
10 мин. |
висок |
Client Proposal |
10:25 |
25 мин. |
висок |
Примерен изход:
Поставяне на документ 'Urgent Report' на стека в 9:10. Дължина на стека: 1.
Начало на обработка на 'Urgent Report' в 9:10. Дължина на стека: 0.
Поставяне на документ 'Weekly Meeting Notes' на стека в 9:20. Дължина на стека: 1.
Поставяне на документ 'Financial Report' и 'Employee Feedback' на дъното на стека в 9:40. Дължина на стека: 3.
Край на обработка на 'Urgent Report' в 9:45. Дължина на стека: 3.
Начало на обработка на 'Weekly Meeting Notes' в 9:45. Дължина на стека: 2.
Край на обработка на 'Weekly Meeting Notes' в 10:15. Дължина на стека: 2.
Начало на обработка на 'Financial Report' в 10:15. Дължина на стека: 1.
Поставяне на документ 'Client Proposal' на стека в 10:25. Дължина на стека: 2.
Край на обработка на 'Financial Report' в 10:35. Дължина на стека: 2.
Начало на обработка на 'Client Proposal' в 10:35. Дължина на стека: 1.
Край на обработка на 'Client Proposal' в 11:00. Дължина на стека: 1.
Начало на обработка на 'Employee Feedback' в 11:00. Дължина на стека: 0.
Край на обработка на 'Employee Feedback' в 11:10. Дължина на стека: 0.
Задача 2. Свойствата на даден предмет се описват с речник, съпоставящ на имената на свойствата (низове с произволна дължина) техните стойностите дробни числа.
а) Да се реализира клас Object, който представя предмет с име (низ с произволна дължина) и речник от свойства.
б) Разглеждаме йерархия от предмети, представена с дърво от предмети, в който всеки възел има произволен брой наследници. Всеки предмет наследява свойствата и стойностите им от предшествениците си в йерархията, като стойностите на наследените свойства са с по-висок приоритет от свойствата, зададени в речника на предмета и ги презаписват. Да се реализира дърво, представящо такава йерархия и да се реализира негов метод, който по име на предмет извежда свойствата на предмета и техните стойности, като за всяко свойство указва дали стойността е собствена или ако е наследена, от кой негов предшественик е наследена.
Примерно дърво: Примерен изход:
За MobilePhone:
Warranty: 24 (from Product)
Return Period: 30 (from Product)
Max Power Use: 100 (from Electronics)
Screen size: 6.2 (own)
За Laptop:
Warranty: 24 (from Product)
Return Period: 30 (from Product)
Max Power Use: 100 (from Electronics)
RAM: 16 (own)