NPRG035 Programování v jazyce C#

Stránka předmětu:Web
UčitelMgr. Pavel Ježek, Ph.D.
Odkaz do SISu:NPRG035
Diskuze:Discord kanál
NavazujícíNPRG038

Rady

  • Před finálním odevzdáním zápočtového programu si zkontrolujte, že když vaše řešení rozbalíte do jiné složky, tak jde bez chyb zkompilovat a spustit.

Materiály

Zápočtový testy

Úkoly

Zde najdete všechny zadání, co se kdy v historii tohoto předmětu objevily.

Četnosti slov (5)

Pro každé unikátní slovo, které se vyskytuje v textu vstupního souboru spočítejte a na standardní výstup vypište jeho četnost.

Celé zadání

Napište program, který dostane jako argument příkazové řádky jeden parametr: jméno vstupního souboru. Pro každé unikátní slovo, které se vyskytuje v textu vstupního souboru spočítejte a na standardní výstup vypište jeho četnost.

Pokud program obdrží špatné množství argumentů, program vypíše na standardní výstup řetězec "Argument Error". V případě, že vstupní soubor nejde otevřít (vstupní soubor neexistuje, špatné znaky v názvu, nedostatečná práva, apod.), nebo nastane chyba při čtení, vypíše program řetězec "File Error".

Při zpracování vstupu a výpisu četností je potřeba dodržet následující pravidla:

  • Zalomení řádku, tabulátor a mezera (tzn. '\n', '\t' a ' ') považujeme za bílé znaky, vše ostatní za znaky tisknutelné. Pro jednoduchost máte zaručeno, že znak '\r' v textu není.

  • Za slovo považujeme libovolnou sekvenci nebílých znaků, která je z obou stran oddělena alespoň jedním bílým znakem nebo začátkem/koncem souboru. Měnit smíte pouze bílé znaky, všechna slova musí zůstat přesně tak, jak jsou ve vstupním souboru.

  • Pro každé unikátní slovo, které se ve vstupním souboru vyskytlo, bude na standardním výstupu uveden jeden řádek, který uvádí jeho četnost na vstupu (záleží na velikosti písmen, tedy např. slova world a World jsou každé unikátním slovem, a každé bude mít tedy spočítánu svoji vlastní četnost).

  • Každý výstupní řádek s četností vypadá následujícím způsobem: slovo: četnost Kde slovo je slovo, kterého se řádek týká; četnost je celé kladné číslo udávající jeho četnost (můžete předpokládat, že žádné slovo se ve vstupním souboru nevyskytuje více než miliardkrát [1 000 000 000]).

  • Výstupní seznam četností je setříděn podle slova, kterému četnost náleží. Běžné metody .NETu, které slouží k porovnání dvou řetězců (např. .CompareTo na instancích řetězců), resp. je využívají, produkují správné uspořádání potřebné pro tuto úlohu.

Výše uvedená pravidla je třeba dodržet velmi důsledně, protože výstup vašeho programu bude porovnán se vzorovým výstupem znak po znaku. Pokud je nn počet znaků na nejdelším řádku ve vstupním souboru, a mm je součet počtu všech znaků všech unikátních slov ve vstupním souboru, tak můžete předpokládat, že máte k dispozici O(n+m)O(n + m) paměti.

Příklad 1:

$>program.exe plain.txt

Vstupní soubor plain.txt:

a: 2
If: 1
is: 2
station: 1
station?: 1
stops,: 1
the: 1
train: 2
what: 1
where: 1
work: 1

Příklad 2:

$>program.exe

std. výstup

Argument Error

Počítání slov (5)

Spočítejte kolik slov se nachází ve vstupním souboru, a celkový počet vypište na standardní výstup.

Odstavcové počítání slov (5+5)

Spočítejte kolik slov se nachází ve vstupním souboru v každém odstavci, a celkový počet vypište na standardní výstup.

Sčítat, či nesčítat? (5+5)

Na vstupu dostanete soubor, kde na prvním řádku jsou názvy sloupečků a na ostatním data. Vaším úkolem je zadaný sloupeček sečíst všechna data a výsledek vypsat do souboru.

Zarovnání do Bloku (8+5)

Všechen text ze vstupního souboru přeformátuje do výstupního tak, aby každý řádek měl právě maximální šířku textu, je-li to možné.

Unit testování ParagraphDetectingTokenReaderDecorator-u (5)

Napište unit testy

Unit testování TableSummatorProcessor-u (5)

Refaktorujte třídu aby šla lépe testovat a pak napište testy.

Benchmarky přístupů k řešení Počítání četností-u (5)

Pomocí balíčku Benchmark otestujte 3 metody a 3 datové struktury

Vícesouborové zarovnání (5+5)

Stejné jako Zarovnání do Bloku jen funguje na textu rozporcovaném na více souborů.

Internetové knihkupectví (10)

Napište aplikaci, která dostane vstupní data, a poté na základě vstupních dotazů, zobrazí požadovaná data ve formě HTML kódu na standartní výstup.

Excel I (8)

Napište aplikaci, která dostane vstupní soubor se zjednodušenou excelovskou tabulkou, vyhodnotí všechny vzorce a výsledek uloží opět ve formě tabulky do výstupního souboru.

Excel II (8)

Vstupní data mohou obsahovat chyby, ty musíte umět zpracovat.

Excel III (4)

Vstupní data mohou být rozdělena do více sheetů.

Huffman I (10)

Na základě vstupních dat sestavte podle pravidel Huffmanův strom.

Huffman II (10)

To samé, ale vstupní data podle výsledného stromu zákódujte.

Huffman III (10)

Podle vstupního Huffmanova stromu, zakódovaná data dekódujte.

Vyhodnocování výrazů (5)

Vyhodnoťte výraz zadaný v preorder notaci.

Vyhodnocování výrazů II (5)

Nově 2 módy: celočíselné vyhodnocování nebo v doublu.

Vyhodnocování výrazů III (5)

Třetí mód: vytiskne na samostatný řádek naposledy načtený výraz v infixové notaci s explicitním zvýrazněním priorit operátorů.

Hradlové síťě (30)

Hradlové síťě II (30)

Hradlové síťě III (40)