Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
ccpp:array [2020/05/18 10:46] buresccpp:array [2023/02/27 08:54] (aktuální) bures
Řádek 3: Řádek 3:
  
 ===== Jednorozměrné pole ===== ===== Jednorozměrné pole =====
-Nejzákladnější verze pole je jednorozměré, které si můžeme představit jako v následující ukázce:+Nejzákladnější verze pole je tzv. jednorozměré pole, které si můžeme představit jako jednořádkovou tabulku v následující ukázce:
  
 <code c> <code c>
Řádek 13: Řádek 13:
  
 ==== Deklarace ==== ==== Deklarace ====
-Syntaxe deklarace pole vypadá následovně: ''datovy_typ identifikator[pocet_prvku];'', kde počet prvků musí být konstantní (být znám během překladu). Pole je po deklaraci neinicializované stejně jako v případě proměnných jednoduchých datových typů.+Syntaxe deklarace pole vypadá následovně: ''datovy_typ identifikator[pocet_prvku];'', kde **//pocet_prvku// musí být konstanta** (být znám během překladu). Pole je po deklaraci neinicializované stejně jako v případě proměnných jednoduchých datových typů.
  
 === Příklad === === Příklad ===
Řádek 29: Řádek 29:
 int pole[4] = {1, 2, 3, 4}; // inicializace pole hodnotami 1, 2, 3, 4. int pole[4] = {1, 2, 3, 4}; // inicializace pole hodnotami 1, 2, 3, 4.
 char pole2[] = {'a', 'b', 'c', 'd', 'e', 'f'}; // inicializace bez uvedení počtu prvků char pole2[] = {'a', 'b', 'c', 'd', 'e', 'f'}; // inicializace bez uvedení počtu prvků
 +short pole3[100] = {10, 20, 30}; // Prvni 3 položky maji dané hodnoty, zbytek je doplněn hodnotou 0
 </code> </code>
  
Řádek 65: Řádek 66:
 Zkuste spočítat jak by bylo veliké pole ''stoleti'', za předpokladu, že velikost se s každým dalším rozměrem násobí. (počítáme tedy zprava doleva) Zkuste spočítat jak by bylo veliké pole ''stoleti'', za předpokladu, že velikost se s každým dalším rozměrem násobí. (počítáme tedy zprava doleva)
  
 +==== Incializace ====
 +Prvky pole můžeme opět v rámci deklarace rovnou inicializovat. Opět pomocí složených závorek, které se ale tentokrát do sebe zanořují podle rozměrů. Je třeba uvažovat nad celou věcí jako nad "polem polí".
  
-more TBA!+=== Příklad dvourozměrného pole === 
 +Matice identity ([[https://en.wikipedia.org/wiki/Identity_matrix|Identity matrix]]) o velikosti 3 uložená po řádcích. 
 +<code c> 
 +float identity[3][3] = { {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f} }; 
 +                                                               ^ 
 +                                                               | 
 +  První rozměr (řádky) - obsahuje 3 další pole                   | 
 +                                       Druhý rozměr (3. sloupec) - obsahuje 3 položky typu float 
 +</code> 
 +==== Přístup k položkám vícerozměrného pole ==== 
 +Pro přístup ke konkrétním položkám opět využíváme indexů zapsaných v hranatých závorkách. Avšak musíme uvést index pro každý rozměr. 
 + 
 +=== Příklad přístupu k položkám v rámci výpisu matice === 
 +<code c> 
 +const int ROWS = 3; 
 +const int COLS = 3; 
 +float identity[ROWS][COLS] = { {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f} }; 
 + 
 +for (int row = 0; row < ROWS; ++row) 
 +
 +  putchar('('); 
 +  for (int col = 0; col < COLS; ++col) 
 +  { 
 +    printf("%f%s", identity[row][col], col < COLS - 1 ? ", " : ""); 
 +  } 
 +  putchar(')'); 
 +  putchar('\n'); 
 +
 +</code>
  • ccpp/array.1589791578.txt.gz
  • Poslední úprava: 2020/05/18 10:46
  • autor: bures