Zbierka úloh

01. Cvičenie č.1
Úlohy:
    Úloha: Preštudujte priloženú dokumentáciu. Zopakujte si jazyk stroja RAM.
    Úloha: Navrhnite algoritmus a odlaďte program pre stroj RAM.
    Úloha: Navrhnite algoritmus a odlaďte program pre stroj RAM.
02. Cvičenie č.2
Úlohy:
    Úloha: Navrhnite algoritmus a odlaďte program pre stroj RAM.
    Úloha: Stanovte asymptotickú časovú a priestorovú zložitosť RAM programu pre výpočet súčtu postupnosti 1,2,...,n. (cvičenie č.2). Použite uniformné aj logaritmické cenové kritérium (inštrukcia ADD).
03. Cvičenie č.3
Úlohy:
    Úloha: Oboznámte sa s jednotlivými prvkami rozhrania vývojového prostredia.
    Úloha: Vytvorte nový projekt (File->New->Project), vyberte konzolovú aplikáciu (Console Application) ako typ projektu, zvoľte jazyk C, zadajte meno projektu a jeho umiestnenie.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte a výsledný program spustite (Build->Build and run).
    Úloha: Oboznámte sa s možnosťami ladenia programu v prostredí Code::Blocks. Ladenie je možné spustiť z ponuky: Debug->Start (F8). Prakticky overte tvorbu bodu prerušenia (Breakpoint) a krokovanie behu programu.
    Úloha: Dôkladne preštudujte dodaný kód. V prípade nejasností sa s konkrétnou otázkou obráťte na cvičiaceho.
    Úloha: Pridajte podporu operácií Cat a Cut na ADT List. Význam operácií je jasný z obrázkov.
    Úloha: Vytvorte implementáciu ADT List, ktorá umožňuje realizovať operácie Cut a Cat v čase O(1).
04. Cvičenie č.4
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte podporu operácie TopAndPop, ktorá prečíta a zároveň odoberie prvok z vrcholu zásobníka (nie len zavolaním existujúcich operácií).
    Úloha: Pridajte podporu operácie PrintStack, ktorá vypíše obsah zásobníka, bez jeho modifikácie.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte podporu operácie Push pre vkladanie prvkov do zásobníka.
    Úloha: Pridajte podporu operácie PrintStack, ktorá vypíše obsah zásobníka, bez jeho modifikácie.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte podporu operácií Front, Dequeue, FrontAndDequeue.
    Úloha: Pridajte podporu operácie PrintQueue, ktorá vypíše obsah frontu, bez jeho modifikácie.
    Úloha: Využitie zásobníka pri vyhodnocovaní výrazov v postfixnom zápise (Postfixná notácia). Výhodou zápisu je jednoduché vyhodnocovanie - po zápise sa postupuje zľava doprava, ak je vstupom číslica - hodnota sa vloží do zásobníka, ak operátor - vyberie sa zo zásobníka potrebný počet hodnôt (binárne operátory +,-,*,/ vyberú dve hodnoty), vykoná požadovaná operácia a výsledok vloží do zásobníka. Ak je prečítaný celý vstup, výsledok vyhodnotenia výrazu je v zásobníku. Napr. VSTUP: 82/35*+ a VÝSTUP: 19
    Úloha: Vytvorte ADT Stack, kde prvkami budú ADT Queue. Riešenie prezentujte vhodným testovacím modulom.
05. Cvičenie č.5
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte podporu operácie PrintRow, ktorá vypíše hodnoty vrcholov na zadanej úrovni stromu.
    Úloha: Pridajte podporu operácie PrintSubtree, ktorá vypíše hodnoty vrcholov podstromu, ktorého koreňom je prvok so zadaným indexom.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Nájdite chybu a opravte ju v implementácii operácie pre prehľadávanie grafu do hĺbky dfs. Operácia dfs pre svoju činnosť využíva rekurzívnu funkciu dfsr().
    Úloha: Pridajte podporu operácie dfsst, ktorá vypíše hrany tvoriace kostru grafu (spanning tree) získanú prehľadávaním do hĺbky. V prípade, že zadaný graf nie je súvislý, vypíšte všetky kostry (jeho súvislých komponentov) získané prehľadávaním do hĺbky (spanning forest).
    Úloha: Vytvorte operáciu bfs realizujúcu prehľadávanie grafu do šírky. Implementujte operáciu bfsst, ktorá vypíše hrany tvoriace kostru grafu (spanning tree) získanú prehľadávaním do šírky. V prípade nesúvislého grafu vypíšte všetky kostry (jeho súvislých komponentov) získané prehľadávaním do šírky (spanning forest).
    Úloha: Implementujte operáciu na binárnom strome BuildHeap(), ktorá preusporiada prvky tak, aby tvorili haldu ((max) heap).
06. Cvičenie č.6
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte. Výsledný program spustite.
    Úloha: Pridajte podporu nerekurzívneho prechodu stratégiou PREORDER.
    Úloha: Pridajte podporu prechodu stratégiou LEVEL-ORDER. Zvážte využite ADT Queue (cvičenie č.4).
    Úloha: Pridajte implementáciu operácie SetTT pre inicializáciu ternárneho stromu a podporu rekurzívneho prechodu ternárnym stromom operáciami preorderTT a postorderTT.
    Úloha: Navrhnite a implementujte operáciu levelorderNQ prechodu LEVEL-ORDER binárnym stromom bez využitia ADT Queue, ak výška stromu je jej parametrom.
07. Tu napíšte názov cvičenia.
Úlohy:
    Úloha: Tu napíšte konkrétne úlohy, ktoré ma študent vyriešiť.
    Úloha: Tu napíšte konkrétne úlohy, ktoré ma študent vyriešiť.
    Úloha: Tu napíšte úlohy ktoré sú pripravené nad základný rámec cvičenia.
    Úloha: Tu napíšte úlohy ktoré sú pripravené nad základný rámec cvičenia.
08. Cvičenie č.8
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte. Výsledný program spustite.
    Úloha: Implementujte algoritmus MAXMIN podľa uvedeného pseudokódu (alebo prednášok).
    Úloha: Implementujte CHAIN_MATRIX_MULTIPLICATION algoritmus podľa uvedeného pseudokódu (alebo prednášok).
    Úloha: Implementujte algoritmus Coin Change Problem podľa nižšie uvedeného pseudokódu. Uvažujte riešenia pre rôzne vstupné sumy, ak dostupné sú mince s nominálnymi hodnotami: 100,25,20,5,1.
    Úloha: Implementujte algoritmus Coin Change Problem podľa nižšie uvedeného pseudokódu. Uvažujte riešenia pre rôzne vstupné sumy, ak dostupné sú mince s nominálnymi hodnotami: 100,25,20,5,1.
09. Cvičenie č.9
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte a výsledný program spustite.
    Úloha: Implementujte algoritmus BubbleSort (napr. podľa uvedeného pseudokódu).
    Úloha: Postupne zobrazujte činnosť algoritmu (stav poľa) po každom prechode hlavným cyklom.
    Úloha: Pridajte podporu utriedenia vstupnej postupnosti vzostupne a zostupne podľa hodnoty parametra funkcie realizujúcej triedenie (pozri obrázok).
    Úloha: Implementujte algoritmus InsertionSort (napr. podľa uvedeného pseudokódu).
    Úloha: Postupne zobrazujte činnosť algoritmu (stav poľa) po každom prechode hlavným cyklom.
    Úloha: Pridajte podporu utriedenia vstupnej postupnosti vzostupne a zostupne podľa hodnoty parametra funkcie realizujúcej triedenie (pozri obrázok).
    Úloha: Implementujte algoritmus MergeSort.
10. Cvičenie č.10
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte. Výsledný program spustite.
    Úloha: Postupne zobrazujte činnosť algoritmu pri každom prechode hlavnou slučkou (pozri obrázok).
    Úloha: Doplňte do tela funkcie RadixSortQueue kód realizujúci samotné triednie.
    Úloha: Postupne zobrazujte činnosť algoritmu pri každom prechode hlavnou slučkou (pozri obrázok).
    Úloha: Implementujte triedenie k-tíc nerovnakej dĺžky algoritmom RadixSort.
11. Cvičenie č.11
Úlohy:
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte. Výsledný program spustite.
    Úloha: Doplňte implementáciu funkcií HTprint a HTdelete podľa nasledujúceho vzoru.
    Úloha: Vytvorte BVS postupným vkladaním prvkov (4, 5, 7, 2, 1, 3, 6).
    Úloha: Odstráňte z uvedeného BVS postupne tieto vrcholy (4, 8, 6, 5, 2, 1, 7).
    Úloha: Vytvorte AVL strom postupným vkladaním prvkov (4, 5, 7, 2, 1, 3, 6).
    Úloha: Odstráňte z uvedeného AVL stromu postupne tieto vrcholy (4, 8, 6, 5, 2, 1, 7).
    Úloha: Vytvorte 2-3 strom postupným vkladaním prvkov (1, 5, 8, 3, 6, 9, 7).
    Úloha: Odstráňte z vytvoreného 2-3 stromu postupne tieto vrcholy (8, 5).
    Úloha: Implementujte hašovaciu tabuľku s otvorenou adresáciou (lineárne, kvadratické hašovanie).
12. Cvičenie č.12
Úlohy:
    Úloha: Nastavenie vývojového prostredia tak, aby bolo možné realizovať úhľadný výpis stromových údajových štruktúr.
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte podporu operácie Member, ktorá bude implementovaná ako nerekurzívna funkcia (rekurzívna už bola uvedená).
    Úloha: Pridajte do vytvoreného projektu všetky súbory z pripraveného archívu. Projekt preložte.
    Úloha: Pridajte operáciu vyváženia jednotlivých podstromov pre operáciu Delete v prípade, že výška pravého podstromu vyvažovaného vrchola sa zmenší.
    Úloha: Funkciu Insert pre pridávanie vrcholov do BVS implementujte ako nerekurzívnu.
    Úloha: Vytvorte program pre vytvorenie dokonale vyváženého stromu (rovnomernej distribúcie známeho počtu n vrchov) rekurzívnym spôsobom.
comments powered by Disqus