Autorské riešenie Táto úloha môže byť vyriešená viacerými spôsobmi. Treba dodržať niekoľko podmienok zo zadania. Na začiatku nasmerovať Mórica správnym smerom pomocou súradníc cielX a cielY. Počas behu programu je nutné vykonávať štyri činnosti kontrolovať, kde sa nachádzam, kontrolovať množstvo zvyšných zásob a počas pohybu znižovať stav zásob podľa aktuálneho terénu.
Ako sme už hore spomenuli hlavne funkcie, ktoré by mal program vykonávať, môže ich vidieť v procedúre dobrodruzstvo. Na začiatku si môžete všimnúť, že si uchovávame začiatočné súradnice a tiež tvorbu premenných navrat a hladSmad, ktoré budeme používať neskôr na zistenie toho, či mi došli zásoby alebo som narazil na vodnú prekážku a vykonávam návrat na začiatočnú pozíciu. Hlavnou časťou je cyklus, ktorý vykonávam pokiaľ nie som v cieli alebo kým nie som hladný alebo smädný. Vnútro cyklu pozostáva zo zistenia dostatku zásob pomocou procedúry suroviny, pohybu a následne podľa toho o aký terén ide zníženie počtu zásob. Na konci využívame spomenuté premenne na zistenie toho k akému ukončeniu cesty došlo, či už k úspešnému alebo neúspešnému s prežitím alebo tragickým koncom. viem dobrodruzstvo :cielX :cielY :voda :jedlo
ph
urobTu "zacX xSur
urobTu "zacY ySur
urobTu "navrat 0
urobTu "hladSmad 0
nechsmer smerk zoznam :cielX :cielY
kym [zaroven vzdialenost :cielX :cielY >= 1 :hladSmad = 0][
ak2 (suroviny :voda :jedlo < 1)[
urobTu "hladSmad 1
][
do 1
ak farbaBodu = "olivova [
urobTu "jedlo :jedlo - 1
urobTu "voda :voda - 1
]
ak farbaBodu = "zelena [
urobTu "jedlo :jedlo - 1
urobTu "voda :voda - 1
]
ak farbaBodu = "hneda [
urobTu "jedlo :jedlo - 2
urobTu "voda :voda - 1
]
ak farbaBodu = "zlta [
urobTu "jedlo :jedlo - 1
urobTu "voda :voda - 3
]
ak farbaBodu = "modra [
urobTu "navrat 1
vp 180
urobTu "cielX :zacX
urobTu "cielY :zacY
]
]
]
ak2 (:hladSmad = 1) [
pis [cesta je neuspesna s tragickym koncom]
][
ak (zaroven :navrat = 0 vzdialenost :cielX :cielY < 1)[
pis [cesta je uspesna]
]
ak (zaroven :navrat = 1 vzdialenost :cielX :cielY < 1)[
pis [cesta je neuspesna s prezitim]
]
]
koniec
Procedúra suroviny slúži na zistenie dostatku surovín, ak dôjde aspoň jedna zo surovín výsledok vracia 0 inač 1. viem suroviny :jedlo :voda ak :jedlo < 1 [vysledok 0] ak :voda < 1 [vysledok 0] vysledok 1 koniec Vaše zaujímavé riešenia a najčastejšie chyby Viaceré tými sa rozhodli pozmeniť zadanie a odstrániť z neho vstupne premenne cielX a cielY teda na vstupe očakávali iba množstvo jedla a vody. Ďalšími menej početnými chybami boli zlý výpis výsledku prípadne sa jeden z výsledkov nevypisoval alebo kontrola poctu jedla a vody, kde mohla nastať situácia kedy ich počet nebol rovný nule ale bol záporný. |
||||||||||
|
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |
||||||||||