================================================================================= - podmienky - body - účasť - úplne 2, čiastočne 1 - príklad - dokončený na cvičení 3, doma 2 - príklady sa posielajú mailom, a to do nasledujúceho utorka 13:00 - listing je priamo v tele mailu - je nutné dodržiavať navrhnutý interface! - projekt/písomka - 10 bodov - do 27.3. sa študent musí rozhodnúť, ktorú z týchto možností si vyberie, a to podaním/nepodaním návrhu projektu - aspoň 40, z toho aspoň 5 z projektu/písomky ================================================================================= 1. ================================================================================= Napíšte program, ktorý zistí, či sú zátvorky v zadanom slove dobre uzátvorkované (na ostatných znakoch nezáleží). Napr. (aa(a)fsd), (()()), iu(jgh)jkh sú dobré, (qw(ds)as, (()))(, ) sú zlé. Program musí obsahovať: - procedure nacitaj (var slovo: string); - function maZatvorkyVPoriadku (slovo: string): boolean ================================================================================= 2. ================================================================================= Napíšte procedúry a funkcie na podporu práce s lineárnym zoznamom. Hlavný program ich bude testovať. Program musí obsahovať: - typ ukazovatel, ktorý bude smerníkom na typ zaznam - typ zaznam s položkami hodnota typu string a dalsi typu ukazovatel - procedure vypisZoznam (zaciatok: ukazovatel); - procedure vlozHodnotuNaZaciatokZoznamu (var zaciatok: ukazovatel, hodnota: string); ================================================================================= 3. ================================================================================= Napíšte ďalšie procedúry a funkcie na podporu práce s lineárnym zoznamom. Hlavný program ich bude testovať. Program musí obsahovať: - procedure inicializujZoznam (var zaciatok: ukazovatel); - procedure vlozHodnotuNaKoniecZoznamu (var zaciatok: ukazovatel, hodnota: string); - procedure vlozHodnotuPodlaUsporiadania (var zaciatok: ukazovatel, hodnota: string); - procedure vymazHodnotuZoZoznamu (var zaciatok: ukazovatel, hodnota: string); - procedure vymazZoznam (var zaciatok: ukazovatel); - procedure spojZoznamy (var zaciatok1, zaciatok2: ukazovatel); - function ukazovatelNaZaznam (zaciatok: ukazovatel, hodnota: string): ukazovatel; ================================================================================= 4. ================================================================================= Napíšte program, ktorý pomocou cyklického zoznamu simuluje hru vypočítavanka. Program musí obsahovať: - typ hrac s položkami meno typu string a ukazovateľ na ďalšieho - procedure pridajHraca (meno: string); - procedure zahrajKolo (var vypadnuty: string); (výstupný parameter vypadnuty obsahuje meno vypadnutého hráča v danom kole) - procedure zahrajHru (var vitaz: string); (výstupný parameter vitaz obsahuje meno jediného hráča, ktorý vôbec nevypadol) ================================================================================= 5. ================================================================================= Napíšte program, ktorý nájde všetky rozmiestnenia ôsmich dám na šachovnici tak, aby sa žiadne dve z nich navzájom neohrozovali. Program musí obsahovať: - procedure vypisRiesenie; - procedure ulozDamu (riadok: integer); ================================================================================= 6. ================================================================================= Napíšte program, ktorý nájde všetky cesty jazdca také, že prechádzajú všetkými poliami šachovnice mxn. Program musí obsahovať: - procedure vypisRiesenie; - procedure urobSkok (riadok, stlpec, cisloSkoku: integer); - komentare!!! ================================================================================= 7. ================================================================================= Napíšte program (presnejšie - jeho 1. časť), ktorý pre zadaný výrok v infixovom tvare nájde jeho prefixový a postfixový tvar. Výrok zo zadania je správne uzátvorkovaný. Na elemenárne výroky sú vyhradené písmená (p, q, r, s, t, u, ...), spojky sú vyjadrené znakmi takto: > implikácia, = ekvivalencia, & konjunkcia, | disjunkcia, - negácia Program musí obsahovať: - type ukazovatel na uzol - type uzol, ktorý bude záznamom obsahujúcim tieto položky: - koreňový znak - spojka alebo (v prípade, keď ide o list) elementárny výrok - dva smerníky na podstromy - ľavý a pravý - v prípade negácie je ľavý podstrom prázdny (t.j. smerník je nil) - v prípade listu sú prázdne oba smerníky - procedure rozlozNaPodvyroky(vyrok: string; var lavyPodvyrok: string; var korenovyZnak: char; var pravyPodvyrok: string); - napr. rozlozNaPodvyroky('((p>q)&(-r))') vráti lavyPodvyrok = '(p>q)', korenovyZnak = '&', pravyPodvyrok = '(-r)' - function novyUzol(lavyPodstrom: ukazovatel; korenovyZnak: char; pravyPodstrom: ukazovatel): ukazovatel; ================================================================================= 8. ================================================================================= Napíšte program (presnejšie - jeho 2. časť), ktorý pre zadaný výrok v infixovom tvare nájde jeho prefixový a postfixový tvar. Program musí obsahovať: - function strom (vyrok: string): ukazovatel; - rekurzívna funkcia, ktorá pre daný výrok vytvorí jeho stromovú reprezentáciu - function prefixovyTvar (vyrok: string): string; - function postfixovyTvar (vyrok: string): string; ================================================================================= 9. ================================================================================= Doplňte predchádzajúci program tak, aby vedel ohodnocovať výroky. Doplnený program musí obsahovať: - type uzol, ktorý bude doplnený o položku ohodnotenie s implicitnou hodnotou -1 - procedure vycistiOhodnotenia (strom: ukazovatel); - každému uzlu v strome priradí ohodnotenie -1 - procedúra je rekurzívna - procedure ohodnotPremennuVStrome (strom: ukazovatel; premenna: char; ohodnotenie: integer); - každému výskytu premennej v strome priradí príslušné ohodnotenie - procedúra je rekurzívna - function ohodnotenieStromu (strom: ukazovatel): integer; - pri zadanom ohodnotení všetkých premenných zistí ohodnotenie celého výroku reprezentovaného stromom - ak niektorej premennej ohodonotenie 1 alebo 0 chýba (t.j. je ohodnotená -1), na znak toho bude aj výsledok -1 - funkcia je rekurzívna ================================================================================= 10. ================================================================================= ...práca na projektoch... =================================================================================