Warning
This page is located in archive.

Lab 05 - Pole variabilní délky a textové řetězce

  • Pro vyučující: 05.

int strcmp(const char *str1, const char *str2)
int strncmp(const char *str1, const char *str2, size_t n)

Úkoly na cvičení

Pole variabilní délky

  1. Napište program, který provede inicializaci 1D pole. Velikost pole zadá uživatel ze standardního vstupu. Protože se jedná o inicializaci za běhu programu, je třeba zkompilovat program s podporou standardu C99.
  2. Pole naplňte celými čísly ze standardního vstupu.
  3. Doplňte program tak, aby prošel pole pomocí cyklu a vypsal jednotlivé prvky pole. Zkuste napsat cyklus tak, aby program vypsal pole ve více sloupcích.
  4. Napište funkci, která vypíše prvky pole, které je jejím argumentem. Funkci implementujte v přechozím programu.
  5. Napište funkci, která naplní pole zadané velikosti náhodnými celými čísly v zadaném rozsahu. Vytvořené pole je návratovou hodnotou funkce.
  6. Naplňte pole pomocí funkce z předchozího bodu. Napište funkci, která určí četnost čísel v tomto poli (histogram).

Další úkoly

  1. Napište funkci, která setřídí pole metodou counting-sort. Nesetříděné pole je argumentem funkce, návratovou hodnotou funkce je pole setříděné.

Textové řetězce

  • Definujte textový řetězec “Everybody likes PRGA” a vypište ho. Následně vypište z tohoto řetězce pouze “likes PRGA” a nakonec řetězec změňte na “Tom likes PRGA” a vypište ho. Přemýšlejte, jak to provést nejúsporněji.
  • Naprogramujte funkce strlen, strcmp a strncmp.

cat

  • Naprogramujte zjednodušenou verzi programu cat. Načtěte vstup ze stdin a zase ho vypište na výstup (stdout).

echo "Hello world" | cat
Hello world

  • Upravte program tak, aby vypsal vstup až za první mezerou:

echo "Hello world" | cat2
world

  • Vypište každe slovo ze vstupu na samostatný řádek (za oddělovače slov považujte mezeru, konec řádku \n a tabulátor \t).

echo "Hello world   and hello    again   " | words
Hello
world
and
hello
again

  • Nyní zkuste totéž, ale za každé slovo vypište i jeho délku a slova 'and' a 'or' nejak označte.

echo "Hello world   and hello    again   " | words-len
Hello 5
world 5
and 3 <--
hello 5
again 5

tr

  • Načtěte vstup a vypište ho s malými písmeny přepsanými na velké a naopak

echo "Hello world" | cap
hELLO WORLD

  • Nyní zkuste zjednodušenou verzi programu tr. Program bude mít zadány dva argumenty na příkazové řádce, které budou sloužit jako předpis pro překlad znaků viz. následující příklad:

echo "Hello world" | tr 'Hl' 'Xk'
Xekko workd
echo "Hello world" | tr 'dweji' '01234'
H2llo 1orl0

  • Zkuste si pospojovat dnešní programy. Např.:

echo "Hello world   and hello    again   " | words | cap
hELLO
WORLD
AND
HELLO
AGAIN

courses/b3b36prg/labs/lab05.txt · Last modified: 2023/02/14 11:02 by faiglj