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: 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
courses/b0b99prpa/hw/hw08.txt · Last modified: 2019/12/04 09:05 by viteks