ОО1/Лаб 3 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(→‎В2: Додатак. (прво па мушко))
м (Ne mora transakcija da bude uspešna, to se određuje iz funkcije za prenos)
 
(Није приказано 9 међуизмена 4 корисника)
Ред 1: Ред 1:
{{tocright}}
== В1 ==
== В1 ==
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/13E112OO1_13S112OO1_DZ_Lab3_2021_V1.pdf на страници предмета.] Испод су дате модификације:
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/2021/13E112OO1_13S112OO1_DZ_Lab3_2021_V1.pdf на страници предмета.] Испод су дате модификације:
* ''(20 поена)'' '''Трансакција''' се ствара са задатим рачуном са кога се врши пренос (<code>racun1</code>), рачуном на који се преноси (<code>racun2</code>), износом за пренос и датумом трансакције. Сви подаци који се задају приликом стварања могу да се дохвате. Трансакција садржи још и информацију о томе да ли је успешна. Приликом стварања трансакције врши се пренос задатог износа са рачуна <code>racun1</code> на рачун <code>racun2</code> и поставља информација да је трансакција успешна. Могуће је трансакцију прогласити неуспешном (<code>~transakcija</code>) и дохватити информацију да ли је успешна (<code>*transakcija</code>). Трансакција се у излазни ток исписује (<code>it<<transakcija</code>) у облику '''Т:'''<code>racun1</code>-><code>racun2</code>:износ-датум-успех.
* ''(20 поена)'' '''Трансакција''' се ствара са задатим рачуном са кога се врши пренос (<code>racun1</code>), рачуном на који се преноси (<code>racun2</code>), износом за пренос и датумом трансакције. Сви подаци који се задају приликом стварања могу да се дохвате. Трансакција садржи још и информацију о томе да ли је успешна. Приликом стварања трансакције врши се пренос задатог износа са рачуна <code>racun1</code> на рачун <code>racun2</code> и поставља информација да ли је трансакција успешна. Могуће је трансакцију прогласити неуспешном (<code>~transakcija</code>) и дохватити информацију да ли је успешна (<code>*transakcija</code>). Трансакција се у излазни ток исписује (<code>it<<transakcija</code>) у облику '''Т:'''<code>racun1</code>-><code>racun2</code>:износ-датум-успех.
* ''(25 поена)'' <s>'''Динарски рачун''' је банковни рачун чија је ознака валуте ''RSD''.</s> Уколико се пренос врши на задати рачун који је девизни, потребно је извршити конверзију задатог износа из валуте ''RSD'' у валуту ''EUR'' и на тај конвертовани износ додати девизном рачуну. '''Девизни рачун''' је банковни рачун чија је ознака валуте ''EUR''. Девизни рачун садржи средњи курс по коме може да се врши конверзија валуте ''EUR'' у ''RSD'' и обрнуто. Средњи курс је исти за све рачуне, може да се дохвати и може да му се постави нова вредност. Уколико се пренос врши на задати рачун који је динарски, потребно је извршити конверзију задатог износа из валуте ''EUR'' у валуту ''RSD'' и тај конвертовани износ додати динарском рачуну.
* ''(25 поена)'' <del>'''Динарски рачун''' је банковни рачун чија је ознака валуте ''RSD''.</del> Уколико се пренос врши на задати рачун који је девизни, потребно је извршити конверзију задатог износа из валуте ''RSD'' у валуту ''EUR'' и на тај конвертовани износ додати девизном рачуну. '''Девизни рачун''' је банковни рачун чија је ознака валуте ''EUR''. Девизни рачун садржи средњи курс по коме може да се врши конверзија валуте ''EUR'' у ''RSD'' и обрнуто. Средњи курс је исти за све рачуне, може да се дохвати и може да му се постави нова вредност. Уколико се пренос врши на задати рачун који је динарски, потребно је извршити конверзију задатог износа из валуте ''EUR'' у валуту ''RSD'' и тај конвертовани износ додати динарском рачуну.
* ''(10 поена)'' '''Листа''' садржи произвољан број података неког типа. Може да се дода један елемент у листу, као и да се дохвати број елемената листе. Може да се постави на први елемент, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу уз могућност промене. Могуће је избацити текући елемент из листе. Грешка је ако не постоји текући елемент у моменту покушаја дохватања и избацивања.
* ''(10 поена)'' '''Листа''' садржи произвољан број података неког типа. Може да се дода један елемент у листу, као и да се дохвати број елемената листе. Може да се постави на први елемент, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу уз могућност промене. Могуће је избацити текући елемент из листе. Грешка је ако не постоји текући елемент у моменту покушаја дохватања и избацивања.
* ''(10 поена)'' '''Клијент''' је особа која садржи листу банковних рачуна. Ствара се без рачуна, а рачуни могу накнадно да се додају. Могуће је дохватити рачун са задатим бројем рачуна, грешка је ако нема таквог рачуна. Клијент се излазни ток исписује (<code>it<<klijent</code>) тако што се прво испише особа, а затим у засебним редовима њени рачуни.
* ''(10 поена)'' '''Клијент''' је особа која садржи листу банковних рачуна. Ствара се без рачуна, а рачуни могу накнадно да се додају. Могуће је дохватити рачун са задатим бројем рачуна, грешка је ако нема таквог рачуна. Клијент се излазни ток исписује (<code>it<<klijent</code>) тако што се прво испише особа, а затим у засебним редовима њени рачуни.
Ред 9: Ред 11:


== В2 ==
== В2 ==
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/13E112OO1_13S112OO1_DZ_Lab3_2021_V2.pdf на страници предмета.] Испод су дате модификације:
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/2021/13E112OO1_13S112OO1_DZ_Lab3_2021_V2.pdf на страници предмета.] Испод су дате модификације:
* '''Јело''' садржи листu намирница. Ствара се са задатим називом који је могуће дохватити. Могуће је додати намирницу помоћу оператора ''+=''. Могуће је израчунати нутритивну вредност и калорије једног јела као збир нутритнивних вредности односно калорија свих намирница. Јело се у излазни ток исписује (<code>it<<jelo</code>) тако што се прво испише назив а затим у сваком следећем реду по намирница коју садржи.
* '''Јело''' садржи листu намирница. Ствара се са задатим називом који је могуће дохватити. Могуће је додати намирницу (<code>jelo+=namirnica</code>). Могуће је израчунати нутритивну вредност и калорије једног јела као збир нутритнивних вредности односно калорија свих намирница. Јело се у излазни ток исписује (<code>it<<jelo</code>) тако што се прво испише назив а затим у сваком следећем реду по намирница коју садржи.
* '''Посно јело''' је јело које је посно. Грешка је уколико се у посно јело покуша додати намирница која није посна.
* '''Посно јело''' је јело које је посно. Грешка је уколико се у посно јело покуша додати намирница која није посна.
* '''Дијетално јело''' је јело које не садржи више од 10 грама масти. Грешка је уколико се у дијетално јело дода намирница која ово ограничење нарушава.
* '''Дијетално јело''' је јело које не садржи више од 10 грама масти. Грешка је уколико се у дијетално јело дода намирница која ово ограничење нарушава.
* '''Вежба''' садржи текстуални назив вежбе и целобројни број калорија који се потроши за један минут вежбе са којима се ствара. Сва поља је могуће дохватити. Вежба се у излазни ток исписује (<code>it<<vezba</code>) у облику '''V:'''''назив''-''број калорија''.
* '''Вежба''' садржи текстуални назив вежбе и целобројни број калорија који се потроши за један минут вежбе са којима се ствара. Сва поља је могуће дохватити. Вежба се у излазни ток исписује (<code>it<<vezba</code>) у облику '''V:'''''назив''-''број калорија''.
* '''Тренинг''' се ствара са трајањем и вежбом. Може да се дохвати број потрошених калорија током тренинга. Тренинг се у излазни ток исписује (<code>it<<trening</code>) у облику ''' T:'''''број потрошених калорија''.
* '''Тренинг''' се ствара са трајањем и вежбом. Може да се дохвати број потрошених калорија током тренинга. Тренинг се у излазни ток исписује (<code>it<<trening</code>) у облику ''' T:'''''број потрошених калорија''.
* '''Особа''' се ствара са ствара са називом особе и килажом. Особа садржи листу јела која је појела током дана. Могуће је додати јело особи (<code>osoba+=jelo<code>). Особа садржи листу тренига које је одрадила у току дана. Могуће је одрадити тренинг (<code>osoba+=trening<code>). Грешка је уколико се додавањем тренинга падне испод 2000kcal. Могуће је завршити дан (<code>!osoba<code>). На крају дана израчунати нову килажу особе(4kcal додају 1 грам килажи). Особа се исписује у излатни ток (<code>it<<osoba<code>) у облику '''о:'''''Назив - Килажа'' а затим у следећем реду листа јела а затим листа тренинга.
* '''Особа''' се ствара са ствара са називом особе и килажом. Особа садржи листу јела која је појела током дана. Могуће је додати јело особи (<code>osoba+=jelo</code>). Особа садржи листу тренига које је одрадила у току дана. Могуће је одрадити тренинг (<code>osoba+=trening</code>). Грешка је уколико се додавањем тренинга падне испод 2000kcal. Могуће је завршити дан (<code>!osoba</code>). На крају дана израчунати нову килажу особе (4kcal додају 1 грам килажи). Особа се исписује у излазни ток (<code>it<<osoba</code>) у облику '''о:'''''Назив - Килажа'', у следећем реду листа јела а затим листа тренинга.
''(5 поена)'' Направити главну функцију која ствара неколико намирница и одштампати их. ''(5 поена)'' Направити главну функцију која ствара особу, неколико јела и неколико тренинга. Одштампати особу. Додати јела и тренинге особи а затим завршити дан. Поново одштампати особу.


Направити главну функцију која ствара неколико намирница и одштампати их. (5п).
== В4 ==
Направити главну функцију која ствара особу, неколико јела и неколико тренинга. Одштампати особу. Додати јела и тренинге особи а затим завршити дан. Поново
Ова модификација је дошла на поправној трећој лабораторијској вежби. Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/2021/13E112OO1_13S112OO1_DZ_Lab3_2021_V4.pdf на страници предмета.] Испод су дате модификације:
одштампати особу.
* ''(5 поена)'' '''Вредносни операнд''' је операнд чија реална вредност може да се дохвати. Ознака врсте је '''<code>V</code>'''.
* ''(10 поена)'' '''Литерал''' је вредносни операнд, чији задати натпис представља вредност литерала децималног реалног броја (подразумевано 0.0) са произвољним бројем цифара испред тачке и произвољним бројем цифара иза тачке. Грешка <code>GLiteral</code> је уколико задата<sup>[sic]</sup> текстуални натпис није у форми децималног реалног броја.
* ''(10 поена)'' '''Променљива''' је вредносни операнд, чији задати натпис садржи само слова и цифре, при чему први знак мора да буде слово. Грешка <code>GPromenljiva</code> је уколико задат текстуални натпис није у наведеној форми. Промељива<sup>[sic]</sup> садржи литерал, који представља њену тренутну вредност и који може да се постави.
* ''(10 поена)'' <del>Бинарни '''оператор''' је елемент, коме целобројни приоритет може да се дохвати. Два оператора се могу упоредити користећи релацију веће (<code>op1 > op2</code>), при чему им се упоређују њихови целобројни приоритети. Приоритет оператора одређује првенство груписања операнада. Ознака врсте је '''<code>O</code>'''.</del> Могуће је израчунати реалну вредност примене оператора над задатом листом вредносних операнада (<code>operator[lista]</code>), при чему је грешка <code>GOperator</code> уколико се покуша примена оператора, а број операнада није тачно 2.
* ''(2 поена)'' <del>'''Сабирање''' је бинарни оператор чији је текстуални натпис +, а целобројни приоритет 1.</del> Применом оператора сабирају се реалне вредности операнада.
* ''(4 поена)'' '''Множење''' је бинарни оператора чији је текстуални натпис *, а целобројни приоритет 2. Применом оператора множе се реалне вредности операнада.
* ''(4 поена)'' '''Степеновање''' је бинарни оператор чији је текстуални натпис ^, а целобројни приоритет 3. Применом оператора степенује се реална вредност првог операнда на степен другог.
* ''(25 поена)'' '''Процесор израза у постфиксном облику''' постоји као јединствени објекат у систему. Ствара се празан само једанпут, а затим се (по потреби) дохвата објекат већ направљеног процесора. Може да израчуна реалну вредност задатог израза у постфиксном облику (<code>procesor[izraz]</code>). Грешка <code>GVrednost</code> је уколико није могуће израчунати вредност израза. Процесор не може да се копира ни на који начин.
* ''(20 поена)'' '''Генератор израза у инфиксном облику''' постоји као јединствени објекат у систему. Ствара се празан само једанпут, а затим се (по потреби) дохвата објекат већ направљеног генератора. Може да генерише израз у инфиксном облику на основу задатог израза у постфиксном облику (<code>generator[izraz]</code>). Операнди сваког оператора су заједно са тим оператором окружени једним паром заграда. Грешка <code>GInfiks</code> је уколико није могуће генерисати исправан израз у инфиксном облику. Генератор не може да се копира ни на који начин.
Написати главну функцију која ''(5 поена)'' направи променљиве a, b и c, на основу њих следећи израз: a + b * c и испише га на стандардном излазу, а затим користећи генератор израза у постфиксном облику генерише постфиксни израз на основу претходног израза и испише га на стандардном излазу. Добијени постфиксни израз је '''a b c * +'''. ''(5 поена)'' Поставити променљивој a вредност литерала 1.5, променљивој b вредност литерала 2, а променљивој c вредност литерала 3.5. Користећи процесор постфиксног израза израчунати вредност претходно добијеног постфиксног израза и исписати је на стандардном излазу (добијена вредност је 8.5), а затим користећи генератор израза у инфиксном облику генерисати инфиксни израз на основу претходног постфиксног израза и исписати га на стандардном излазу. Добијени инфиксни израз је '''( a + ( b * c ) )'''.


== В5 ==
== В5 ==
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/13E112OO1_13S112OO1_DZ_Lab3_2021_V5.pdf на страници предмета.] Испод су дате модификације:
Поставка задатка без модификација се може наћи [https://rti.etf.bg.ac.rs/rti/ir2oo1/lab/2021/13E112OO1_13S112OO1_DZ_Lab3_2021_V5.pdf на страници предмета.] Испод су дате модификације:
* <s>'''Превоз''' се ствара са задатом дестинацијом и реалном ценом карте у оба смера. Могуће је дохватити дестинацију и цену превоза, подразумевано једнаку цени карте.</s> Могуће је дохватити тип превоза.
* <del>'''Превоз''' се ствара са задатом дестинацијом и реалном ценом карте у оба смера. Могуће је дохватити дестинацију и цену превоза, подразумевано једнаку цени карте.</del> Могуће је дохватити тип превоза.
* '''Аутобус''' је превоз чији је тип ''AUTOBUS''. '''Авион''' је превоз чији је тип ''AVION'' и садржи аеро таксу са којом се ствара. Аеро такса се додаје на цену превоза авиона.
* '''Аутобус''' је превоз чији је тип ''AUTOBUS''. '''Авион''' је превоз чији је тип ''AVION'' и садржи аеро таксу са којом се ствара. Аеро такса се додаје на цену превоза авиона.
* '''Листа''' садржи произвољан број података неког типа. Може да се дода један елемент на крај листе. Може да се постави на први елемент листе, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу. Грешка је ако не постоји текући елемент приликом дохватања. Листу је могуће испразнити. Листу није могуће копирати ни на који начин.
* '''Листа''' садржи произвољан број података неког типа. Може да се дода један елемент на крај листе. Може да се постави на први елемент листе, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу. Грешка је ако не постоји текући елемент приликом дохватања. Листу је могуће испразнити. Листу није могуће копирати ни на који начин.
Ред 31: Ред 43:
* '''Туристичка агенција''' се ствара с процентом марже и садржи листу доступних дестинација, превоза и смештаја у које се накнадно могу додавати дестинације, превози и смештаји (<code>agencija += destinacija, agencija += prevoz, agencija += smestaj</code>). Могуће је за задатог путника и почетак и крај путовања направити туристички аранжман који задовољава преференце путника (''није наглашено у задатку, али ово подразумева и додавање полиса'') а грешка је уколико се преференце путника не могу задовољити.
* '''Туристичка агенција''' се ствара с процентом марже и садржи листу доступних дестинација, превоза и смештаја у које се накнадно могу додавати дестинације, превози и смештаји (<code>agencija += destinacija, agencija += prevoz, agencija += smestaj</code>). Могуће је за задатог путника и почетак и крај путовања направити туристички аранжман који задовољава преференце путника (''није наглашено у задатку, али ово подразумева и додавање полиса'') а грешка је уколико се преференце путника не могу задовољити.
Направити главну функцију која направи неколико дестинација, смештаја, превоза, датума, полиса и једног путника и све их испише. Затим направи агенцију, дода дестинације, смештаје и превозе у њу, направи туристички аранжман преко агенције за путника и испише га.
Направити главну функцију која направи неколико дестинација, смештаја, превоза, датума, полиса и једног путника и све их испише. Затим направи агенцију, дода дестинације, смештаје и превозе у њу, направи туристички аранжман преко агенције за путника и испише га.


[[Категорија:ОО1]]
[[Категорија:ОО1]]
[[Категорија:Лабораторијске вежбе]]

Тренутна верзија на датум 9. јануар 2022. у 14:33

В1

Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:

  • (20 поена) Трансакција се ствара са задатим рачуном са кога се врши пренос (racun1), рачуном на који се преноси (racun2), износом за пренос и датумом трансакције. Сви подаци који се задају приликом стварања могу да се дохвате. Трансакција садржи још и информацију о томе да ли је успешна. Приликом стварања трансакције врши се пренос задатог износа са рачуна racun1 на рачун racun2 и поставља информација да ли је трансакција успешна. Могуће је трансакцију прогласити неуспешном (~transakcija) и дохватити информацију да ли је успешна (*transakcija). Трансакција се у излазни ток исписује (it<<transakcija) у облику Т:racun1->racun2:износ-датум-успех.
  • (25 поена) Динарски рачун је банковни рачун чија је ознака валуте RSD. Уколико се пренос врши на задати рачун који је девизни, потребно је извршити конверзију задатог износа из валуте RSD у валуту EUR и на тај конвертовани износ додати девизном рачуну. Девизни рачун је банковни рачун чија је ознака валуте EUR. Девизни рачун садржи средњи курс по коме може да се врши конверзија валуте EUR у RSD и обрнуто. Средњи курс је исти за све рачуне, може да се дохвати и може да му се постави нова вредност. Уколико се пренос врши на задати рачун који је динарски, потребно је извршити конверзију задатог износа из валуте EUR у валуту RSD и тај конвертовани износ додати динарском рачуну.
  • (10 поена) Листа садржи произвољан број података неког типа. Може да се дода један елемент у листу, као и да се дохвати број елемената листе. Може да се постави на први елемент, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу уз могућност промене. Могуће је избацити текући елемент из листе. Грешка је ако не постоји текући елемент у моменту покушаја дохватања и избацивања.
  • (10 поена) Клијент је особа која садржи листу банковних рачуна. Ствара се без рачуна, а рачуни могу накнадно да се додају. Могуће је дохватити рачун са задатим бројем рачуна, грешка је ако нема таквог рачуна. Клијент се излазни ток исписује (it<<klijent) тако што се прво испише особа, а затим у засебним редовима њени рачуни.
  • (25 поена) Евиденција банке је листа клијената и садржи листу њихових трансакција. Ствара се празна са задатим називом банке. Могуће је додати нову трансакцију која ће бити створена у меморији за динамичку доделу; грешка је ако бар један власник од два рачуна трансакције није у листи клијената. Могуће је дохватити све успешне трансакције које су се догодиле на задати датум. Приликом нестајања евиденције треба обрисати и све трансакције. Евиденција се у излазни ток исписује (it<<evidencija) тако што се прво испише назив банке, а у засебним редовима њени клијенти.

(5 поена) Написати главну функцију која направи једну особу, један девизни и један динарски рачун чији је она власник. Затим дода неке износе на те рачуне, направи једну успешну трансакцију преноса са једног на други рачун и испише трансакцију. (5 поена) Направити једног клијента, један девизни и један динарски рачун чији је власник клијент. Затим клијенту додати те рачуне, а рачунима додати неки износ и направити једну трансакцију преноса између та два рачуна. Направити евиденцију, додати јој претходно направљену трансакцију и исписати евиденцију.

В2

Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:

  • Јело садржи листu намирница. Ствара се са задатим називом који је могуће дохватити. Могуће је додати намирницу (jelo+=namirnica). Могуће је израчунати нутритивну вредност и калорије једног јела као збир нутритнивних вредности односно калорија свих намирница. Јело се у излазни ток исписује (it<<jelo) тако што се прво испише назив а затим у сваком следећем реду по намирница коју садржи.
  • Посно јело је јело које је посно. Грешка је уколико се у посно јело покуша додати намирница која није посна.
  • Дијетално јело је јело које не садржи више од 10 грама масти. Грешка је уколико се у дијетално јело дода намирница која ово ограничење нарушава.
  • Вежба садржи текстуални назив вежбе и целобројни број калорија који се потроши за један минут вежбе са којима се ствара. Сва поља је могуће дохватити. Вежба се у излазни ток исписује (it<<vezba) у облику V:назив-број калорија.
  • Тренинг се ствара са трајањем и вежбом. Може да се дохвати број потрошених калорија током тренинга. Тренинг се у излазни ток исписује (it<<trening) у облику T:број потрошених калорија.
  • Особа се ствара са ствара са називом особе и килажом. Особа садржи листу јела која је појела током дана. Могуће је додати јело особи (osoba+=jelo). Особа садржи листу тренига које је одрадила у току дана. Могуће је одрадити тренинг (osoba+=trening). Грешка је уколико се додавањем тренинга падне испод 2000kcal. Могуће је завршити дан (!osoba). На крају дана израчунати нову килажу особе (4kcal додају 1 грам килажи). Особа се исписује у излазни ток (it<<osoba) у облику о:Назив - Килажа, у следећем реду листа јела а затим листа тренинга.

(5 поена) Направити главну функцију која ствара неколико намирница и одштампати их. (5 поена) Направити главну функцију која ствара особу, неколико јела и неколико тренинга. Одштампати особу. Додати јела и тренинге особи а затим завршити дан. Поново одштампати особу.

В4

Ова модификација је дошла на поправној трећој лабораторијској вежби. Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:

  • (5 поена) Вредносни операнд је операнд чија реална вредност може да се дохвати. Ознака врсте је V.
  • (10 поена) Литерал је вредносни операнд, чији задати натпис представља вредност литерала децималног реалног броја (подразумевано 0.0) са произвољним бројем цифара испред тачке и произвољним бројем цифара иза тачке. Грешка GLiteral је уколико задата[sic] текстуални натпис није у форми децималног реалног броја.
  • (10 поена) Променљива је вредносни операнд, чији задати натпис садржи само слова и цифре, при чему први знак мора да буде слово. Грешка GPromenljiva је уколико задат текстуални натпис није у наведеној форми. Промељива[sic] садржи литерал, који представља њену тренутну вредност и који може да се постави.
  • (10 поена) Бинарни оператор је елемент, коме целобројни приоритет може да се дохвати. Два оператора се могу упоредити користећи релацију веће (op1 > op2), при чему им се упоређују њихови целобројни приоритети. Приоритет оператора одређује првенство груписања операнада. Ознака врсте је O. Могуће је израчунати реалну вредност примене оператора над задатом листом вредносних операнада (operator[lista]), при чему је грешка GOperator уколико се покуша примена оператора, а број операнада није тачно 2.
  • (2 поена) Сабирање је бинарни оператор чији је текстуални натпис +, а целобројни приоритет 1. Применом оператора сабирају се реалне вредности операнада.
  • (4 поена) Множење је бинарни оператора чији је текстуални натпис *, а целобројни приоритет 2. Применом оператора множе се реалне вредности операнада.
  • (4 поена) Степеновање је бинарни оператор чији је текстуални натпис ^, а целобројни приоритет 3. Применом оператора степенује се реална вредност првог операнда на степен другог.
  • (25 поена) Процесор израза у постфиксном облику постоји као јединствени објекат у систему. Ствара се празан само једанпут, а затим се (по потреби) дохвата објекат већ направљеног процесора. Може да израчуна реалну вредност задатог израза у постфиксном облику (procesor[izraz]). Грешка GVrednost је уколико није могуће израчунати вредност израза. Процесор не може да се копира ни на који начин.
  • (20 поена) Генератор израза у инфиксном облику постоји као јединствени објекат у систему. Ствара се празан само једанпут, а затим се (по потреби) дохвата објекат већ направљеног генератора. Може да генерише израз у инфиксном облику на основу задатог израза у постфиксном облику (generator[izraz]). Операнди сваког оператора су заједно са тим оператором окружени једним паром заграда. Грешка GInfiks је уколико није могуће генерисати исправан израз у инфиксном облику. Генератор не може да се копира ни на који начин.

Написати главну функцију која (5 поена) направи променљиве a, b и c, на основу њих следећи израз: a + b * c и испише га на стандардном излазу, а затим користећи генератор израза у постфиксном облику генерише постфиксни израз на основу претходног израза и испише га на стандардном излазу. Добијени постфиксни израз је a b c * +. (5 поена) Поставити променљивој a вредност литерала 1.5, променљивој b вредност литерала 2, а променљивој c вредност литерала 3.5. Користећи процесор постфиксног израза израчунати вредност претходно добијеног постфиксног израза и исписати је на стандардном излазу (добијена вредност је 8.5), а затим користећи генератор израза у инфиксном облику генерисати инфиксни израз на основу претходног постфиксног израза и исписати га на стандардном излазу. Добијени инфиксни израз је ( a + ( b * c ) ).

В5

Поставка задатка без модификација се може наћи на страници предмета. Испод су дате модификације:

  • Превоз се ствара са задатом дестинацијом и реалном ценом карте у оба смера. Могуће је дохватити дестинацију и цену превоза, подразумевано једнаку цени карте. Могуће је дохватити тип превоза.
  • Аутобус је превоз чији је тип AUTOBUS. Авион је превоз чији је тип AVION и садржи аеро таксу са којом се ствара. Аеро такса се додаје на цену превоза авиона.
  • Листа садржи произвољан број података неког типа. Може да се дода један елемент на крај листе. Може да се постави на први елемент листе, да се прелази на следећи елемент у односу на текући, да се испита да ли постоји текући елемент и да се дохвати податак у текућем елементу. Грешка је ако не постоји текући елемент приликом дохватања. Листу је могуће испразнити. Листу није могуће копирати ни на који начин.
  • Полиса осигурања се ствара са задатим типом полисе (ZDRAVSTVENO, ODUSTANAK). Сва поља могу да се дохвате. Полиса се у излазни ток исписује (it<<putnik) у облику P:тип.
  • Путник се ствара са текстуалним именом путника, преферираним типом смештаја, дестинацијом и бројем звездица смештаја, као и логичким вредностима које одређују да ли хоће полису осигурања за сваку врсту полисе. Путник се у излазни ток исписује (it<<putnik) у облику: P:име.
  • Туристички аранжман је аранжман који се додатно ствара са процентом марже. У туристички аранжман могу да се накнадно додају полисе осигурања, по једна за сваки тип (није било речено у тексту, али туристички аранжман је власник полисе). Грешка је уколико се покуша додавање типа полисе који је већ додат. Цена туристичког аранжмана се израчунава тако што се на цену обичног аранжамана дода по 1000 за сваку полису осигурања која је обухваћена а затим се помножи с процентом марже.
  • Туристичка агенција се ствара с процентом марже и садржи листу доступних дестинација, превоза и смештаја у које се накнадно могу додавати дестинације, превози и смештаји (agencija += destinacija, agencija += prevoz, agencija += smestaj). Могуће је за задатог путника и почетак и крај путовања направити туристички аранжман који задовољава преференце путника (није наглашено у задатку, али ово подразумева и додавање полиса) а грешка је уколико се преференце путника не могу задовољити.

Направити главну функцију која направи неколико дестинација, смештаја, превоза, датума, полиса и једног путника и све их испише. Затим направи агенцију, дода дестинације, смештаје и превозе у њу, направи туристички аранжман преко агенције за путника и испише га.