======== 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 |