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

5 - Dynamická alokace, struktury

  • pro vyučující: 05

Procvičovaná témata

  • Funkce malloc, calloc, free
  • Ukazatel, 2D pole, a pole polí
  • Složené typy - struktury
  • Dynamická alokace
  • Příprava na násobení matic

Teoretická příprava

Úkoly na cvičení

  1. Napište funkci, která formátovaně vypíše obecné pole reálných čísel.
  2. Napište funkci, která vypočte směrodatnou odchylku z prvků zadaného pole.
  3. Napište funkci, která zajistí načtení n prvků z klávesnice do pole a toto pole předá do volající funkce. Počet prvků bude zadán jako parametr funkce.
  4. Společně s cvičícím si předveďte použití Valgrindu pro diagnostiku přístupů do paměti a správné alokace.
  5. Aplikujte funkce pro výpis a výpočet směrodatné odchylky na pole získané načítací funkcí. Nezapomeňte na dealokaci pole při ukončení programu!
  6. Upravte předchozí funkci tak, aby byla schopna načíst libovolnou posloupnost reálných čísel do pole ukončenou vhodnou zarážkou nebo lépe pomocí EOF, umí-li to vaše konzole.
  7. Upravte předchozí kód tak, aby bylo možné načíst od uživatele více datových řad a pro každou zvlášť spočítat směrodatnou odchylku. Jednoduše to zařídíte tak, že vytvoříte dvourozměrné pole, které ale může mít různé délky řádků. Nezapomeňte zajistit i dealoakaci celého pole!
  8. Vždy kontrolujte program pomocí Valgrindu

Další úlohy k procvičení

Pointerová aritmetika

  1. Odhadněte výsledek a ověřte programem:

int *up, **uup, array[] = {5, -6, 0, 8, -9, 3, 1, -4};
 
up = array;
uup = &up;
 
printf("array[1] = %d \n", array[1]);
printf("array[1] + 4 = %d \n", array[1] + 4);
printf("(array + 1)[2] = %d \n", (array + 1)[2]);
 
printf("*up = %d \n", *up);
printf("*up + 4 = %d \n", *up + 4);
printf("*(up + 1) = %d \n", *(up + 1));
 
printf("**uup = %2d \n", **uup);
printf("*(*uup + 2) = %2d \n", *(*uup + 2));
printf("**uup + 4 = %2d \n", **uup + 4);

courses/b3b36prg/labs/lab05.txt · Last modified: 2019/03/13 16:22 by vanapet1