Programovanie (1) v C/C++
1-INF-127, ZS 2024/25
Zimný semester, semestrálny test: Rozdiel medzi revíziami
Skočit na navigaci
Skočit na vyhledávání
Riadok 1: | Riadok 1: | ||
− | * Záverečná písomka bude v | + | * Záverečná písomka bude v piatok 10.12. 11:30 počas doplnkových cvičení na MS Teams. |
− | * Písomka bude trvať 90 minút a technicky bude fungovať podobne ako teoretické cvičenia 9, budete teda vypĺňať odpovede do pdf zadania alebo do textového súboru. | + | * Písomka bude trvať 90 minút. |
+ | * Personalizované zadania a technicky bude fungovať podobne ako teoretické cvičenia 9, budete teda vypĺňať odpovede do pdf zadania alebo do textového súboru. | ||
* Písomka bude pokrývať učivo po prednášku 20. | * Písomka bude pokrývať učivo po prednášku 20. | ||
* Môžete používať ľubovoľné papierové materiály aj stránku predmetu (poznámky z prednášok), zakázané sú iné webstránky, použitie editorov, kompilátorov, programátorských prostredí, komunikovanie s inými osobami | * Môžete používať ľubovoľné papierové materiály aj stránku predmetu (poznámky z prednášok), zakázané sú iné webstránky, použitie editorov, kompilátorov, programátorských prostredí, komunikovanie s inými osobami | ||
Riadok 6: | Riadok 7: | ||
* Z pisomky je potrebné získať aspoň polovicu bodov. Počas skúškového bude ešte opravný termín (bližšie v [[Zimný semester, pravidlá|pravidlách predmetu]]). | * Z pisomky je potrebné získať aspoň polovicu bodov. Počas skúškového bude ešte opravný termín (bližšie v [[Zimný semester, pravidlá|pravidlách predmetu]]). | ||
+ | <!-- | ||
* Pokročilí, ktorí mali na základe úvodného testu pre pokročilých uznané všetky tri pôvodné písomky, majú z tejto písomky automaticky plný počet bodov. Tí, ktorí mali uznanú jednu alebo dve písomky, budú mať plný počet bodov za niektoré príklady a zvyšné budú riešiť s ostatnými. | * Pokročilí, ktorí mali na základe úvodného testu pre pokročilých uznané všetky tri pôvodné písomky, majú z tejto písomky automaticky plný počet bodov. Tí, ktorí mali uznanú jednu alebo dve písomky, budú mať plný počet bodov za niektoré príklady a zvyšné budú riešiť s ostatnými. | ||
+ | --> | ||
+ | |||
+ | =Zimný semester, príklady na test= | ||
+ | Na semestrálnom teste budú podobné typy príkladov, aké poznáte z teoretických cvičení, napríklad | ||
+ | <!-- * napíšte funkciu, ktorá robí zadanú činnosť --> | ||
+ | * doplňte chýbajúce časti funkcie | ||
+ | * zistite, čo funkcia robí (pre daný vstup alebo všeobecne) | ||
+ | Vyskytne sa však aj nový typ príkladov, kde je úlohou napísať, ako bude na nejakom vstupe fungovať algoritmus alebo dátová štruktúra z prednášky. Nižšie sú ukážky takýchto príkladov. Svoje odpovede si môžete skontrolovať na spodku stránky. | ||
+ | |||
+ | Príklady o binárnych vyhľadávacích stromoch a lexikografických stromoch (príklady 7 a 8 nižšie) na riadnom termíne testu nebudú, môžu sa však vyskytnúť na opravnom termíne. | ||
+ | |||
+ | ==Ukážkové príklady na semestrálny test== | ||
+ | |||
+ | * '''Príklad 1:''' Prepíšte výraz 8 3 4 * + 2 3 + / z postfixovej notácie do bežnej infixovej notácie. Aká je jeho hodnota? Nakreslite ho aj ako strom. | ||
+ | |||
+ | * '''Príklad 2:''' Prepíšte výraz ((2+4)/(3*5))/(1-2) do postfixovej a prefixovej notácie. | ||
+ | |||
+ | * '''Príklad 3:''' Vyhodnocujeme výraz 8 3 4 * + 2 3 - / v postfixovej notácii algoritmom z prednášky. Aký bude obsah zásobníka v čase, keď začneme spracovávať znamienko +? | ||
+ | |||
+ | * '''Príklad 4:''' Máme zásobník s a rad q, pričom obidve štruktúry uchovávajú dáta typu char. Aký bude ich obsah po nasledujúcej postupnosti príkazov? | ||
+ | <pre> | ||
+ | init(s); | ||
+ | init(q); | ||
+ | push(s, 'A'); | ||
+ | push(s, 'B'); | ||
+ | push(s, 'C'); | ||
+ | enqueue(q, pop(s)); | ||
+ | enqueue(q, pop(s)); | ||
+ | push(s, 'D'); | ||
+ | push(s, dequeue(q)); | ||
+ | </pre> | ||
+ | |||
+ | * '''Príklad 5:''' Strom nižšie má v každom uzle uložené jedno písmeno (dáta typu char). V akom poradí budú vypísané jednotlivé písmená, ak použijeme inorder, preorder a postorder prehľadávanie? | ||
+ | <pre> | ||
+ | A | ||
+ | / \ | ||
+ | / \ | ||
+ | B C | ||
+ | / \ / \ | ||
+ | D E F G | ||
+ | / \ | ||
+ | H I | ||
+ | </pre> | ||
+ | |||
+ | * '''Príklad 6:''' Máme binárny strom, v ktorom má každý vrchol buď dve deti a v dátovom poli uložený znak '#' alebo nemá žiadne deti a v dátovom poli má uložený znak '*'. Keď tento strom vypíšeme v preorder poradí, dostaneme postupnosť ##*#*** Nakreslite, ako vyzerá tento strom. | ||
+ | |||
+ | * '''Príklad 7:''' Nakreslite binárny vyhľadávací strom, ktorý dostaneme, ak do prázdneho stromu postupne vkladáme záznamy s kľúčami 3, 4, 1, 2, 5, 6 (v tomto poradí). | ||
+ | |||
+ | * '''Príklad 8:''' Nakreslite lexikografický strom s abecedou {a,b}, do ktorého sme vložili reťazce aba, aaab, baa, bab, ba. Vrcholy, ktoré zodpovedajú niektorému reťazcu zo vstupu, zvýraznite dvojitým krúžkom. | ||
+ | |||
+ | * '''Príklad 9''' Ako bude vyzerať hešovacia tabuľka pri riešení kolízií pomocou spájaných zoznamov, ak hešovacia funkcia je |k| mod 5 a vkladáme prvky 13, -2, 0, 8, 10, 17? | ||
+ | |||
+ | ==Vzorové riešenia ukážkových príkladov na písomný test== | ||
+ | * '''Príklad 1:''' (8+3*4)/(2+3), hodnota 4, strom: | ||
+ | <pre> | ||
+ | / | ||
+ | / \ | ||
+ | / \ | ||
+ | + + | ||
+ | / \ / \ | ||
+ | 8 * 2 3 | ||
+ | / \ | ||
+ | 3 4 | ||
+ | </pre> | ||
+ | * '''Príklad 2:''' postfix 2 4 + 3 5 * / 1 2 - / prefix: / / + 2 4 * 3 5 - 1 2 | ||
+ | * '''Príklad 3:''' na zásobníku budú čísla 8 a 12 (8 je na spodku zásobníka). Číslo 12 vzniklo vynásobením 3 a 4. | ||
+ | * '''Príklad 4:''' na zásobníku budú znaky A, D, C (A na spodku zásobníka), v rade bude písmeno B | ||
+ | * '''Príklad 5:''' | ||
+ | <pre> | ||
+ | Preorder: ABDEHICFD | ||
+ | Postorder: DHIEBFGCA | ||
+ | Inorder: DBHEIAFCG | ||
+ | </pre> | ||
+ | * '''Príklad 6:''' | ||
+ | <pre> | ||
+ | # | ||
+ | / \ | ||
+ | # * | ||
+ | /\ | ||
+ | * # | ||
+ | /\ | ||
+ | * * | ||
+ | </pre> | ||
+ | * '''Príklad 7:''' | ||
+ | <pre> | ||
+ | 3 | ||
+ | / \ | ||
+ | 1 4 | ||
+ | \ \ | ||
+ | 2 5 | ||
+ | \ | ||
+ | 6 | ||
+ | </pre> | ||
+ | * '''Príklad 8:''' (namiesto dvojitého krúžku používame *) | ||
+ | <pre> | ||
+ | . | ||
+ | / \ | ||
+ | / \ | ||
+ | / \ | ||
+ | a b | ||
+ | / \ / | ||
+ | a b a* | ||
+ | / / / \ | ||
+ | a a* a* b* | ||
+ | / | ||
+ | b* | ||
+ | </pre> | ||
+ | * '''Príklad 9:''' | ||
+ | Pre každý index tabuľky 0,..,4 uvádzame zoznam prvkov, ktoré sa do neho zahešujú. Tieto budú pospájané v zozname v uvedenom poradí. | ||
+ | <pre> | ||
+ | 0: 10, 0 | ||
+ | 1: | ||
+ | 2: 17, -2 | ||
+ | 3: 8, 13 | ||
+ | 4: | ||
+ | </pre> |
Verzia zo dňa a času 11:46, 4. december 2021
- Záverečná písomka bude v piatok 10.12. 11:30 počas doplnkových cvičení na MS Teams.
- Písomka bude trvať 90 minút.
- Personalizované zadania a technicky bude fungovať podobne ako teoretické cvičenia 9, budete teda vypĺňať odpovede do pdf zadania alebo do textového súboru.
- Písomka bude pokrývať učivo po prednášku 20.
- Môžete používať ľubovoľné papierové materiály aj stránku predmetu (poznámky z prednášok), zakázané sú iné webstránky, použitie editorov, kompilátorov, programátorských prostredí, komunikovanie s inými osobami
- Pozor, nebude veľa času hľadať niečo v prednáškach, lepšie je spraviť si prehľadný ťahák
- Z pisomky je potrebné získať aspoň polovicu bodov. Počas skúškového bude ešte opravný termín (bližšie v pravidlách predmetu).
Zimný semester, príklady na test
Na semestrálnom teste budú podobné typy príkladov, aké poznáte z teoretických cvičení, napríklad
- doplňte chýbajúce časti funkcie
- zistite, čo funkcia robí (pre daný vstup alebo všeobecne)
Vyskytne sa však aj nový typ príkladov, kde je úlohou napísať, ako bude na nejakom vstupe fungovať algoritmus alebo dátová štruktúra z prednášky. Nižšie sú ukážky takýchto príkladov. Svoje odpovede si môžete skontrolovať na spodku stránky.
Príklady o binárnych vyhľadávacích stromoch a lexikografických stromoch (príklady 7 a 8 nižšie) na riadnom termíne testu nebudú, môžu sa však vyskytnúť na opravnom termíne.
Ukážkové príklady na semestrálny test
- Príklad 1: Prepíšte výraz 8 3 4 * + 2 3 + / z postfixovej notácie do bežnej infixovej notácie. Aká je jeho hodnota? Nakreslite ho aj ako strom.
- Príklad 2: Prepíšte výraz ((2+4)/(3*5))/(1-2) do postfixovej a prefixovej notácie.
- Príklad 3: Vyhodnocujeme výraz 8 3 4 * + 2 3 - / v postfixovej notácii algoritmom z prednášky. Aký bude obsah zásobníka v čase, keď začneme spracovávať znamienko +?
- Príklad 4: Máme zásobník s a rad q, pričom obidve štruktúry uchovávajú dáta typu char. Aký bude ich obsah po nasledujúcej postupnosti príkazov?
init(s); init(q); push(s, 'A'); push(s, 'B'); push(s, 'C'); enqueue(q, pop(s)); enqueue(q, pop(s)); push(s, 'D'); push(s, dequeue(q));
- Príklad 5: Strom nižšie má v každom uzle uložené jedno písmeno (dáta typu char). V akom poradí budú vypísané jednotlivé písmená, ak použijeme inorder, preorder a postorder prehľadávanie?
A / \ / \ B C / \ / \ D E F G / \ H I
- Príklad 6: Máme binárny strom, v ktorom má každý vrchol buď dve deti a v dátovom poli uložený znak '#' alebo nemá žiadne deti a v dátovom poli má uložený znak '*'. Keď tento strom vypíšeme v preorder poradí, dostaneme postupnosť ##*#*** Nakreslite, ako vyzerá tento strom.
- Príklad 7: Nakreslite binárny vyhľadávací strom, ktorý dostaneme, ak do prázdneho stromu postupne vkladáme záznamy s kľúčami 3, 4, 1, 2, 5, 6 (v tomto poradí).
- Príklad 8: Nakreslite lexikografický strom s abecedou {a,b}, do ktorého sme vložili reťazce aba, aaab, baa, bab, ba. Vrcholy, ktoré zodpovedajú niektorému reťazcu zo vstupu, zvýraznite dvojitým krúžkom.
- Príklad 9 Ako bude vyzerať hešovacia tabuľka pri riešení kolízií pomocou spájaných zoznamov, ak hešovacia funkcia je |k| mod 5 a vkladáme prvky 13, -2, 0, 8, 10, 17?
Vzorové riešenia ukážkových príkladov na písomný test
- Príklad 1: (8+3*4)/(2+3), hodnota 4, strom:
/ / \ / \ + + / \ / \ 8 * 2 3 / \ 3 4
- Príklad 2: postfix 2 4 + 3 5 * / 1 2 - / prefix: / / + 2 4 * 3 5 - 1 2
- Príklad 3: na zásobníku budú čísla 8 a 12 (8 je na spodku zásobníka). Číslo 12 vzniklo vynásobením 3 a 4.
- Príklad 4: na zásobníku budú znaky A, D, C (A na spodku zásobníka), v rade bude písmeno B
- Príklad 5:
Preorder: ABDEHICFD Postorder: DHIEBFGCA Inorder: DBHEIAFCG
- Príklad 6:
# / \ # * /\ * # /\ * *
- Príklad 7:
3 / \ 1 4 \ \ 2 5 \ 6
- Príklad 8: (namiesto dvojitého krúžku používame *)
. / \ / \ / \ a b / \ / a b a* / / / \ a a* a* b* / b*
- Príklad 9:
Pre každý index tabuľky 0,..,4 uvádzame zoznam prvkov, ktoré sa do neho zahešujú. Tieto budú pospájané v zozname v uvedenom poradí.
0: 10, 0 1: 2: 17, -2 3: 8, 13 4: