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

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

Pole variabilní délky

  • pro vyučující: 05

Cíle cvičení

  1. 1D pole variabilní délky.
  2. Ukazatel (pointer).

Úkoly na cvičení

  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.

Textové řetězce

size_t strlen(const char *str)

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

Úkoly

  • Definujte textový řetězec “Everybody likes PRP” a vypište ho. Následně vypište z tohoto řetězce pouze “likes PRP” a nakonec řetězec změňte na “Tom likes PRP” 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/b0b36prp/labs/lab05.txt · Last modified: 2022/10/16 22:18 by dupakjak