Úkoly k procvičování

FEL Abeceda

  • Naimplementujte program, který přeloží znaky 'A'–'Z' a 'a'–'z' na FEL abecedu. Ostatní znaky nechá nezměněné.
  • Abecedu je definována jediným polem znaků, ve kterém jsou jednotlivá slova za sebou a na mapování písemene abecedy na slovy je realizováno jako pole ukazatelů na textové řetězce.
  • V programu kontrolujte, že abeceda obsahuje všechna slova 'A'–'Z' začínající velkým písmenem, např. Bool test_alphabet(char *str);. Seznamte se s voláním assert() z knihovny assert.h.
  • Řetězec abecedy upravte tak, aby bylo možné tisknout slova abecedy, například funkcí printf(“%s”, words[i]). Funkci můžet pojmenovat například následovně.
    _Bool fill_words(char *alphabet, size_t n, char **words);
  • Při implementace uvažujte počet slova abecedy jako
    #define WORDS_N ('Z' - 'A' + 1)
    .
  • Program vhodně dekomponujte na funkce a implementujte (nebo použijte existující funkce), např. is_upper(), is_lower(), to_upper().

Příklad výstupu

  • V programu uvažujte možnost anglické a české abecedy definované jako

Anglická FEL abeceda

Česká FEL abeceda

  • Využijte symbolické konstanty jako textové literály

Definice abecedy

  • Která z následujících možností je správně a proč?

A. Pole znaků

B. Ukazatel na (posloupnost) znak(ů)

  • Implementujte test abecedy a nastavení pole ukazatelů na řetězce char* words[WORDS_N].
  • Implementujte překlad textu na stdin na FEL abecedu na stdout, případně ladící informace nebo chybová hlášení vypisujte na stderr.

Příklad hlavní funkce main()

  • Ověřte co dělá nastavení proměnné prev.

Další úkoly

  • Program rozšířte o přepínání anglické a české abecedy na základě hodnoty proměnné prostředí LANG=cs_CZ.UTF-8.
  • Program rozšiřte o dynamickou alokace pole znaků s abecedou.
  • Program rozšiřte o načítání abecedy ze souboru, např. použitím FILE *file = fopen(“soubor.txt”, “r”); a getc(file) s využitím dynamické alokace.

Příklad výstupu

courses/b0b36prp/labs/tasks.txt · Last modified: 2025/11/01 17:14 by faiglj