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

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

Pole variabilní délky

  • pro vyučující: 06

Procvičovaná témata

  • 1D pole variabilní délky
  • 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/lab06.txt · Last modified: 2018/06/11 15:00 (external edit)