Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

HW 09 - Analýza textu

Termín odevzdání 12.12.2020 19.12.2020 23:59 CEST
Bodový zisk 8b (4+2+1+1)
Min. bodový zisk 4b
Počet uploadů 15
Typ zadání povinné

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í.
Rozšíření A a B jsou nezávislé programy, které se liší pouze přepínači při spuštění programu, přičemž je třeba splnit základní zadání. Pro získání maximálního počtu bodů musí fungovat obě rozšíření A i B.

Zadání (4b)

  • Ze standardního vstupu přečtěte textový soubor obecné velikosti.
  • Program zpracovává parametry z příkazové řádky a ovlivňuje podle jejich hodnot chování programu (viz dále). Pořadí parametrů je libovolné.
  • Vstupní text rozdělte na slova. Ze slov odstraňte všechna interpuknční znaménka (,, ., :, ;, a další).
  • Vypište seznam všech (unikátních) slov textu a jejich četnosti.
  • Pro slovo ve výpisu je vyhrazeno 20 znaků. Za místem vyhrazeným pro slovo je mezera, která odděluje slovo od čísla reprezentujícího četnost.
  • 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. Pokud je slov více, vypište je v pořadí, v jakém se vyskytují v textu.
  • Návratová hodnota programu bude vždy 0.
  • Výpis na standardní výstup je ukončen znakem \n.

Rozšíření A (2b)

  • 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!\n”.

Rozšíření B (1b)

  • 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!\n”.

Rozšíření A+B (1b)

  • Je vyžadována funkčnost obou rozšíření A i B, pro udělení max. počtu bodů

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

Odevzdání

Veřejné příklady + Makefile: hw09_-_text.zip

Povinné zadání
Název v BRUTE HW09
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/hw09.txt · Last modified: 2020/12/17 22:22 by viteks