ОО1/Лаб 2 2021
< ОО1
Пређи на навигацију
Пређи на претрагу
В2
Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:
Књига има назив, аутора и јединствени аутоматски генерисан целобројни индентификатор.[sic] Назив књиге и име аутора се задају при стварању. Сви подаци могу да се дохвате. Могуће је направити копију књиге (!knjiga
) која враћа показивач на новонаправљену књигу са истим називом и аутором. Није могуће копирати књигу ни на један други начин. Могуће је исписати књигу у излазни ток (it<<knjiga
) у облику KNJIGA id : naslov – autor.Библиотека има назив, број књига који се налази у библиотеци и највећи број књига који може да смести. Сви подаци могу да се дохвате. Приликом стварања задаје се назив и највећи број књига који може да се смести у библиотеку. Могуће је додати књигу у библиотеку (biblioteka+=knjiga
). Приликом додавање[sic] књиге у библиотеку, библиотека направи копију књиге и сачува је по адреси. Књига се може дохватити из библиотеке навођењем идентификатора књиге. Могуће је исписати библиотеку у излазни ток (it<<biblioteka
) тако што се у првом реду испише име и капацитет библиотеке у облику BIBLIOTEKA naziv br_knjiga/kapacitet, а у засебним редовима све књиге које се налазе у њој.- Датум има дан, месец и годину који се задају при стварању (подразумевано 01.01.1970.) и могу да се дохвате. Могуће је исписати датум у излазни ток (
it<<datum
) у облику дан.месец.година., при чему се дан и месец исписуји на ширини од две децимале са водећом нулом по потреби. - Позајмица прима књигу, датум почетка и датум краја зајма и статус који говори да ли је позајмица завршена. Могуће је дохватити књигу. Приликом стварања задају се књига и датум почетка позајмице, док је датум краја позајмице недефинисан све док књига не буде враћена. Могуће је проверити да ли је књига враћена (
~pozajmica
) и комплетирати позајмицу враћањем књиге. Могуће је исписати позајмицу у излазни ток (it<<vreme
)[sic] у облику књига (датум_почетка - датум_краја). Уколико књига није враћена датум краја не треба исписивати. - Листа позајмица има произвољан број позајмица и ствара се празна након чега јој се позајмице појединачно додају. Могуће јој је додати позајмицу (
lista+=pozajmica
), дохватити позајмицу на основу задате књиге (уколико се више позајмица односи на исту књигу, вратити ону позајмицу која је прва додата у листу) и уклонити позајмицу из листе (lista-=pozajmica
). Могуће је исписати листу позајмица у излазни ток (it<<lista
) тако што се свака позајмица испише у засебном реду. - Библиотека додатно има листу историје позајмица, и листу текућих позајмица. Могуће је позајмити књигу из библиотеке, при чему се задаје датум почетка позајмице и идентификатор књиге, а одговарајуће место у библиотеци анулира. Књига се том приликом само пребацује из библиотеке у позајмицу, која се памти у листи текућих позајмица. Могуће је вратити књигу у библиотеку, којом приликом се одговарајућа позајмица комплетира датумом враћања и пребацује у историју позајмица, а књига из позајмице враћа у библиотеку. Приликом исписа библиотеке, за књиге које су тренутно на позајмици исписати ?, а затим исписати и све текуће позајмице и историју позајмица.
Написати главну функцију која детаљно тестира функционалности претходно описаних класа. Направити главну функцију која ствара једну библиотеку, у њу додаје 3 књиге и исписује библиотеку. Затим се две књиге позајме, а једна од њих врати, те се поново испише библиотека.
В3
Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:
Скуп се састоји од произвољног броја карактера. Ствара се задатoм C++ ниском (string
), чији се карактери одмах додају. Могуће је додати карактер у скуп (skup+=karakter), при чему се додавање карактера који се већ налази у скупу игнорише, као и испитати да ли се карактер налази у скупу (skup(karakter)). Скуп није могуће копирати ни на који начин.Реч се ствара задатoм C++ ниском (string) и састоји се само од слова енглеског алфабета. Могуће је одредити дужину речи (+rec
), као и број слогова речи (~rec
). Број слогова речи одређује се бројем носилаца слогова речи. Носилац слога је сваки самогласник у скупу {a, e, i, o, u} или сваки сонант у скупу {l, n, r} испред/иза кога се не налази самогласник. Могуће је одредити позицију слова н-тог носиоца слога у речи (rec(n)
), при чему позиције слова крећу од 0. Вредностn==0
одређује први слог на почетку речи, позитивне вредностиn
означавају претрагу од почетка речи, а негативне вредностиn
од краја речи. У случају неуспешне претраге повратна вредност је -1. Две задате речи се римују (rec1^rec2
) ако им се поклапају одговарајућа слова последња два слога, односно последњег слога ако је нека од речи једносложна. Провера поклапања слова врши се од носилаца претпоследњих слогова у речима, односно носилаца последњих слогова ако је нека од речи једносложна. Реч је могуће учитати из једне линије улазног тока (it>>rec
), при чему се игноришу сви знакови који нису слова енглеског алфабета и при чему се губи претходни садржај речи. Реч се исписује у излазни ток (it<<rec
) исписивањем њених слова.- Стих садржи променљих број речи. Ствара се празан, а некон тога је могуће додавати појединачне речи на крај стиха (
stih+=rec
). Могуће је одредити број слогова стиха изражен у збиру слогова његових речи (~stih
). Стих се исписује у излазни ток (it<<stih
) исписивањем његових речи раздвојених тачно једним бланко знаком, у једном реду. - Строфа је секвенца стихова ограниченог капацитета. Ствара се празна, а након тога је могуће додавати стихове на крај строфе (
strofa+=stih
) при чему је операција без ефекта уколико се покуша додавање стиха у пуну строфу или стиха са различитим бројем слогова од стихова који се већ налазе у строфи. Строфа се исписује у излазни ток (it<<strofa
) исписивањем њених стихова у посебним редовима.
Написати главну функцију која детаљно тестира функционалности претходно описаних класа. Направити главну функцију која ствара једну строфу, у њу додаје неколико стихова и исписује их.
Напомене
Модификације су написане по сећању студената који их су радили.