Recent Changes - Search:

OS?

GUI?

ZALG?

PRC2?

PRC1?

edit SideBar

Podmínky pro udělení zápočtu

Předmět je uzavřen zápočtem. Pro získání zápočtu je potřeba vypracovat, obhájit zápočtový program a také dokázat znalost probrané látky při přezkoušení:

Témata doplňujících otázek

  1. objektové typy v C++
    • zapouzdření (přístupová práva, deklarace friend, ...)
    • dědičnost (předek a potomek, dědictví a přístupová práva, ...)
    • polymorfismus (abstraktní třídy, virtuální metody, časná a pozdní vazba, ...)
  2. přetěžování operátorů
    • operátory, které lze přetěžovat jako nestatické metody nebo jako volné funkce
    • operátory, které lze přetížit pouze jako nestatické metody

Obecné požadavky

Při psaní zápočtové úlohy dbejte na čistotu kódu (vhodný rozklad do podprogramů a samostatně překládaných zdrojových souborů, odsazování, komentáře). Program by měl jít přeložit bez varování překladače a měl by uvolnit veškerou alokovanou paměť. Dbejte také na komunikaci s uživatelem programu.

Při řešení používejte objektové typy (případně šablony objektových typů), v případě potřeby vhodným způsobem přetěžte operátory a využijte výjimky.

Náměty na zápočtové úlohy (bude průběžně aktualizováno)

Následující zadání berte jako inspiraci, můžete zkusit vymyslet vlastní zadání obdobné složitosti.

  1. Hledání cesty z bludiště. Předpokládejte, že bludiště je uloženo v PBM souboru, kde 0 znamená zeď a 1 chodbu. Cestu k souboru s bludištěm a počáteční pozici a souřadnici východu zadá uživatel. Napište pomocnou třídu PBMImage? pro načítání, zobrazování (na standardní výstup) a ukládání obrázků ve formátu PBM.
  2. Řešení hanojských věží. Předpokládejte, že počet disků zadá uživatel, při řešení nepoužívejte rekurzi. Pro vizualizaci použijte nějakou grafickou knihovnu (např. Qt nebo SDL)
  3. Knihovna pro práci s velkými celými čísly. Rozsahy datových typů jsou omezené. Navrhněte vlastní datový typ, který bude schopen reprezentovat celá čísla až o 200 číslicích. Napište funkce, které budou umět proměnné tehoto datového typu sčítat, odčítat, násobit a celočíselně dělit. (Nápověda: použijte pole znaků).
  4. Pexeso - pro dva lidské hráče, grafický výstup pomocí knihovny Qt, SDL, OpenGL nebo SFML
  5. Jednoduchá hra, grafický výstup pomocí knihovny Qt, SDL, OpenGL nebo SFML. Například:
    • hledání min
    • had
    • tetris
    • Pacman
    • Space Invaders
    • Half Life 3
  6. Jednoduchý řádkový kalkulátor. Na vstupu uživatel zadá aritmetický výraz v infixové notaci. Předpokládejte, že ve výrazu mohou být použity operátory +,- (unární i binární), *, /, ^ (mocnění) a závorky. Výraz převeďte do obráceného polského zápisu a ten pak vyhodnoťte.¨
  7. Elementární buněčný automat. Simulujte prvních N generací elementárního buněčného automatu s pravidlem x. Číslo pravidla x a počet generací zadá uživatel jako parametr příkazové řádky. Poslední parametr bude jméno PBM souboru, do kterého se uloží výsledek simulace (všechny generace, 0 mrtvá buňka, 1 živá buňka). V případě zájmu můžete zadání rozšířit i o implementaci Hry života. Teorie např. na Mathworldu
  8. Upravte třídu Matrix ze cvičení tak, aby data ukládala v std::vector Matici použijte pro řešení soustavy rovnic Ax = b. Doplňte metody pro výpočet determinantu a pro výpočet inverzní matice.
  9. Automatické rozpoznání jazyka textu. Napište program, který rozpozná, v jakém je napsaném jazyce (vyzkoušejte pro angličtinu, francouzštinu, italštinu, španělštinu, holandštinu, maďarštinu, finštinu, švédštinu). Pro rozpoznání lze použít statistické metody - spočítat pro jednotlivé jazyk relativní četnosti jednotlivých znaků, dvojic znaků a trojic znaků (bílé znaky se ignorují). Následně spočítejte tyto četnosti pro neznámý text a porovnejte, se kterým jazykem bude nejlepší shoda. Jako zdrojový text pro trénování můžete použít Chartu OSN, která by měla být k dispozici ve většině rozumných jazyků.
  10. Navrhněte a implementujte čtenářský deník. Pro každou knihu ukládejte autora, jméno, rok vydání, žánr. Doplňte metody pro vkládání záznamů, tisk deníku, vyhledávání podle autora a titulu, uložení deníku na disk (pod zadaným jménem), otevření uloženého deníku, vytvoření nového deníku. Data ukládejte do formátu JSON nebo XML. V případě zájmu můžete místo JSON/XML pro ukládání použít relační databázi, v tomto případě použijte vhodnou C/C++ klientskou aplikace.
  11. Generátor HTML dokumentace. Napište program, který projde vaše zdrojové soubory a z komentářů v nich nalezených vygeneruje HTML dokumentaci. Jako inspiraci se můžete podívat na systém Doxygen
Edit - History - Print - Recent Changes - Search
Page last modified on May 19, 2023, at 12:43 PM