======== HW 08 - Analýza textu ======== ^ Termín odevzdání | 7.12.2019 23:59 CEST | ^ Povinné zadání | 5b | ^ Volitelné zadání | není | ^ Počet uploadů | 10 | Cílem úlohy je provést analýzu textu ve formě textového souboru obecné délky na standardním vstupu programu. V úloze uvažujeme pouze slova bez diakritiky. Čísla se v textu nevyskytují. ===== Zadání ===== * Ze standardního vstupu přečtěte textový soubor obecné velikosti * Vypište seznam všech (unikátních) slov textu. Ze slov odstraňte všechna interpuknční znaménka ('','', ''.'', '':'', '';'', a další) * Seznam může být primárně case-insensitive (tzn. Osel a osel jsou stejná slova, v seznamu se objeví osel) nebo case-sensitive (tzn. Osel a osel jsou dvě různá slova, v seznamu se objeví obě). Chování programu ovlivňuje parametr programu ''-c'' (viz příklady). * Určete počet všech slov. Za slovo se považuje i číselná hodnota, pokud se v textu vyskytuje. * Najděte nejčastější a nejméně časté slovo. * Vypište seznam všech slov. Pro slovo je vyhrazeno 20 znaků. (Za místem vyhrazeným pro slovo je mezera, která odděluje slovo od čísla reprezentujícího četnost.) * Styl řazení výpisu seznamu ovládejte volbou parametru programu ''-s''. Pro ''-s 1'' je seznam nalezených slov řazen vzestupně podle četnosti, pro ''-s 2'' je seznam nalezených slov řazen podle abecedy. Jiné hodnoty parametru budou ignorovány, na standardní chybový výstup pak program vypíše "Warning: Chybna hodnota parametru -s!". * Omezte parametrem programu ''-l'' délku vypisovaných slov. Hodnota parametru ''-l'' je kladné celé číslo, hodnota ''0'' potlačí výpis seznamu slov. Pokud není podmínka pro parametr splněna, je parametr ignorován a na standardní chybový výstup program vypíše "Warning: Chybna hodnota parametru -l!". * Pořadí parametrů je libovolné. ===== Příklady ===== Testovací soubor: $ cat pub00.in Ahoj, jak se mas. Mam se dobre. Jak se mas ty? Ja se mam taky dobre. Implicitní chování programu (bez parametrů příkazové řádky - case insensitive, slova seřazena v pořadí výskytu v datovém souboru) $ ./a.out < pub00.in Seznam slov: ahoj 1 jak 2 se 4 mas 2 mam 2 dobre 2 ty 1 ja 1 taky 1 Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky Case sensitive výpis (parametr ''-c'') $ ./a.out -c < pub00.in Seznam slov: Ahoj 1 jak 1 se 4 mas 2 Mam 1 dobre 2 Jak 1 ty 1 Ja 1 mam 1 taky 1 Pocet slov: 11 Nejcastejsi: se Nejmene caste: Ahoj jak Mam Jak ty Ja mam taky Řazení podle výskytu (vzestupně, case-insensitive případ) ./a.out -s 1 < pub00.in Seznam slov: ahoj 1 ty 1 ja 1 taky 1 jak 2 mas 2 mam 2 dobre 2 se 4 Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky Řazení podle abecedy (case-sensitive případ) ./a.out -c -s 2 < pub00.in Seznam slov: Ahoj 1 Ja 1 Jak 1 Mam 1 dobre 2 jak 1 mam 1 mas 2 se 4 taky 1 ty 1 Pocet slov: 11 Nejcastejsi: se Nejmene caste: Ahoj Ja Jak Mam jak mam taky ty Limit délky vypisovaných slov ./a.out -l 3 < pub00.in Seznam slov: jak 2 mas 2 mam 2 Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky ./a.out -l 0 < pub00.in Pocet slov: 9 Nejcastejsi: se Nejmene caste: ahoj ty ja taky ===== Varianty ===== Veřejné příklady + Makefile: {{ :courses:b0b99prpa:hw:hw08.zip |}} ^ ^ Povinné zadání ^ ^ Název v BRUTE | HW08 | ^ Odevzdávané soubory | main.c | ^ Argumenty při spuštění | -l, -c, -s | ^ Kompilace pomocí | clang -pedantic -Wall -Werror -std=c99 -O2 |