diff options
1 files changed, 31 insertions, 28 deletions
| -rw-r--r-- | src/teaching/oop-2023/week9/index.du | 59 |
diff --git a/src/teaching/oop-2023/week9/index.du b/src/teaching/oop-2023/week9/index.du index ac7892b..ed125c6 100644 --- a/src/teaching/oop-2023/week9/index.du +++ b/src/teaching/oop-2023/week9/index.du @@ -1,37 +1,40 @@ -# Задачи - ООП, Седмица 9, 18.04.2024 +'def title Задачи - ООП, Седмица 9, 18.04.2024 +'def desc Условия на задачите за упражнение + +# {title} \n -На днешното упражнение ще решаваме [url https://learn.fmi.uni-sofia.bg/mod/resource/view.php?id=311448 задачата от Контролно 1], затова задачите ще са в същия дух (макар и да не включват най-новия материал). +На днешното упражнение ще решаваме {url задачата от Контролно 1;https://learn.fmi.uni-sofia.bg/mod/resource/view.php?id=311448}, затова задачите ще са в същия дух (макар и да не включват най-новия материал). -Решението, което писахме по време на практикума, с някои разширения и коментари, може да намерите [url https://github.com/Syndamia/oop-2023-solutions/tree/main/week09/Exam1 тук]. +Решението, което писахме по време на практикума, с някои разширения и коментари, може да намерите {url тук;https://github.com/Syndamia/oop-2023-solutions/tree/main/week09/Exam1}. -GitHub classroom: [url https://classroom.github.com/a/wlL1oUg2 classroom.github.com/a/wlL1oUg2] +GitHub classroom: {url classroom.github.com/a/wlL1oUg2;https://classroom.github.com/a/wlL1oUg2} ## Преговорни ### Задача 1 - Голяма петица -.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise1 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise1} Реализирайте клас Printer, който съдържа модел като низ с произволна дължина и брой принтирани страници като неотрицателно цяло число. Имплементирайте голяма петица. ### Задача 2 - Файлове и класове -.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise2 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise2} Реализирайте клас Date, който съдържа номера на деня, месеца и годината в три отделни целочислени член-данни. -Имплементирайте член-методи [`storeText`], [`storeBinary`], които съответно запазват данните в текстов файл (във формата "YEAR MONTH DAY") и в двоичен файл с подадени имена. -Аналогично имплементирайте [`loadText`] и [`loadBinary`], които презаписват член-данните с тези от подадените (имена на) файлове. +Имплементирайте член-методи {` storeText}, {` storeBinary}, които съответно запазват данните в текстов файл (във формата "YEAR MONTH DAY") и в двоичен файл с подадени имена. +Аналогично имплементирайте {` loadText} и {` loadBinary}, които презаписват член-данните с тези от подадените (имена на) файлове. -В главната функция създайте 5 дати, запазете всяка в [=един и същ текстов файл=], след това прочетете датите в [=нови=] 5 променливи и изкарайте датите в обратен ред. +В главната функция създайте 5 дати, запазете всяка в {b един и същ текстов файл}, след това прочетете датите в {b нови} 5 променливи и изкарайте датите в обратен ред. ## Лесни ### Задача 3 -.solution-link [url https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise3 Решение] +.solution-link {url Решение;https://github.com/Syndamia/oop-2023-solutions/blob/main/week09/Exercise3} Реализирайте клас Train, който съдържа: .bulleted @@ -45,10 +48,10 @@ GitHub classroom: [url https://classroom.github.com/a/wlL1oUg2 classroom.github. Имплементирайте методите: .bulleted - от голямата петица -- [`TransferNextRegion`], който променя сегашната локация на следващата по ред в текстовия файл (чието име е подадено в конструктор). +- {` TransferNextRegion}, който променя сегашната локация на следващата по ред в текстовия файл (чието име е подадено в конструктор). Ако няма следващо по ред, тогава локацията да си остане същата и да се хвърли грешка. Ако се срещнат проблеми с файла, хвърлете грешка. -- [`SwitchRailLine`], който приема идентификационен номер на релсовата линия и име на текстов файл, и променя вътрешните стойности. +- {` SwitchRailLine}, който приема идентификационен номер на релсовата линия и име на текстов файл, и променя вътрешните стойности. Съответно локацията трябва да бъде първата в подадения файл. Ако се срещнат проблеми с файла, хвърлете грешка. @@ -59,19 +62,19 @@ GitHub classroom: [url https://classroom.github.com/a/wlL1oUg2 classroom.github. За този клас имплементирайте методите: .bulleted -- [`HaveCollided`], който приема индекс на два влака и връща дали са се блъснали. +- {` HaveCollided}, който приема индекс на два влака и връща дали са се блъснали. Това се случва ако в една и съща релсова линия и един и същи регион, когато регионът не е последния възможен. -- [`RunTrains`], който придвижва напред всички влакове, докато не стигнат финалната си възможна дестинация. +- {` RunTrains}, който придвижва напред всички влакове, докато не стигнат финалната си възможна дестинация. Влакове които са се ударили не се придвижват напред. Връщате броя ударили се влакове. Да се имплементира главна функция, в която приемате име на двоичен файл от потребителя. В този файл имате някакъв брой редици с идентификационен номер на релсова линия, брой локации върху съответната линия и всички локации като нормални низове, разделени с нови редове. -Допълнително в главната функция приемайте от потребителя влаковете, като имената на текстовите файлове се избират от програмата ([=НЕ=] от потребителя) според идентификационния номер на релсовата линия и информацията във файла с редиците. -[=Не може да променяте Train класа!=] +Допълнително в главната функция приемайте от потребителя влаковете, като имената на текстовите файлове се избират от програмата ({b НЕ} от потребителя) според идентификационния номер на релсовата линия и информацията във файла с редиците. +{b Не може да променяте Train класа!} -Последно в главната функция създайте обект от тип TrainNetwork и изкарайте резултата от [`RunTrains`] на екрана. +Последно в главната функция създайте обект от тип TrainNetwork и изкарайте резултата от {` RunTrains} на екрана. ## Трудни @@ -87,11 +90,11 @@ GitHub classroom: [url https://classroom.github.com/a/wlL1oUg2 classroom.github. Имплементирайте методи: .bulleted - от голямата петица -- [`AddPassenger`], който добавя нов човек на дадения индекс на седалка -- [`RemovePassenger`], който премахва човека от дадения индекс -- [`TotalHunger`], който връща общото количество гладност в колата -- [`StoreData`], който запазва всички данни от колата в [=двоичен=] файл с подадено име -- [`LoadData`], който презаписва всички данни с тези от подадения по име [=двоичен=] файл +- {` AddPassenger}, който добавя нов човек на дадения индекс на седалка +- {` RemovePassenger}, който премахва човека от дадения индекс +- {` TotalHunger}, който връща общото количество гладност в колата +- {` StoreData}, който запазва всички данни от колата в {b двоичен} файл с подадено име +- {` LoadData}, който презаписва всички данни с тези от подадения по име {b двоичен} файл Реализирайте клас DriveThrough, в който се запазват: .bulleted @@ -101,14 +104,14 @@ GitHub classroom: [url https://classroom.github.com/a/wlL1oUg2 classroom.github. Имплементирайте методи: .bulleted - от голяма петица -- [`QueueUp`], който приема кола и я вкарва в края на опашката. +- {` QueueUp}, който приема кола и я вкарва в края на опашката. Разбира се, масивът се уголемява ако е нужно. -- [`Serve`], който изпълнява поръчката на най-предната кола в опашката. +- {` Serve}, който изпълнява поръчката на най-предната кола в опашката. За единица глад, ресторанта може да сготви достатъчно храна (за да нахрани клиента с "единица" храна) за единици време между половината от дължината на името на ресторанта и три пъти дължината на името на ресторанта време.\n Максималното възможно количество време за изпълнение на поръчката варира и според броя коли в опашка: ако са под 6 на брой, тогава тогава се увеличава с 10%, а ако са над 10 тогава се намалява с по 5% за всяка кола след десетата. -- [`EfficiencyService`], който изпълнява поръчките на всички коли в опашката и връща средно колко време е отнело на поръчка. -- [`StoreData`], който запазва всички данни в [=текстов=] файл с подадено име -- [`LoadData`], който презаписва всички данни с тези от подадения по име [=текстов=] файл +- {` EfficiencyService}, който изпълнява поръчките на всички коли в опашката и връща средно колко време е отнело на поръчка. +- {` StoreData}, който запазва всички данни в {b текстов} файл с подадено име +- {` LoadData}, който презаписва всички данни с тези от подадения по име {b текстов} файл Имплементирайте главна функция, в която от потребителския вход приемате име на текстов файл. -Създайте обект от тип DriveThrough, който да запълни своите стойности с тези от подадения файл и изкарайте на екрана стойността от [`EfficiencyService`]. +Създайте обект от тип DriveThrough, който да запълни своите стойности с тези от подадения файл и изкарайте на екрана стойността от {` EfficiencyService}. |