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
- 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, ...)
- 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.
- 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.
- Ř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)
- 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ů).
- Pexeso - pro dva lidské hráče, grafický výstup pomocí knihovny Qt, SDL, OpenGL nebo SFML
- 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
- 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.¨
- 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
- 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.
- 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ů.
- 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.
- 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
|