ccpp:array

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 11:20] 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 68: Řádek 69:
 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í". 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í".
  
-=== Příklad === +=== 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.+Matice identity ([[https://en.wikipedia.org/wiki/Identity_matrix|Identity matrix]]o velikosti 3 uložená po řádcích.
 <code c> <code c>
 float identity[3][3] = { {1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 0.0f, 1.0f} }; 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                  +  První rozměr (řádky) - obsahuje 3 další pole                   
-                                                        Druhý rozměr (3. sloupec) - obsahuje 3 položky typu float+                                       Druhý rozměr (3. sloupec) - obsahuje 3 položky typu float
 </code> </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.
  
-more TBA!+=== 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.1589793622.txt.gz
  • Poslední úprava: 2020/05/18 11:20
  • autor: bures