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 |