Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
ccpp:array [2019/10/20 22:04] – vytvořeno bures | ccpp: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é, | + | Nejzákladnější verze pole je tzv. jednorozměré |
<code c> | <code c> | ||
Řádek 13: | Řádek 13: | ||
==== Deklarace ==== | ==== Deklarace ==== | ||
- | Syntaxe deklarace pole vypadá následovně: | + | Syntaxe deklarace pole vypadá následovně: |
=== 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[] = {' | char pole2[] = {' | ||
+ | short pole3[100] = {10, 20, 30}; // Prvni 3 položky maji dané hodnoty, zbytek je doplněn hodnotou 0 | ||
</ | </ | ||
Řádek 46: | Řádek 47: | ||
===== Vícerozměrná pole ===== | ===== Vícerozměrná pole ===== | ||
- | TBA v rámci | + | Pole může mít i více rozměrů jak jeden. V případě dvou rozměrů si lze pole představit jako tabulku s buňkami (řádky, sloupce) u tří rozměrů jako krychli jejíž části se adresují pomocí souřadnic (např. //X//, //Y//, //Z//). Počet rozměrů není striktně omezen a může značně přesahovat naši fantazii. |
+ | |||
+ | ==== Deklarace ==== | ||
+ | Vícerozměrné pole deklarujeme uvedením více hranatých závorek za sebou: '' | ||
+ | |||
+ | === Příklady deklarací vícerozměrných polí === | ||
+ | <code c> | ||
+ | // tabulka obsahující 3 řádky a 5 sloupců | ||
+ | int tabulka[3][5]; | ||
+ | |||
+ | // krychle o velikosti 5 obsahující čísla s plovoucí čárkou | ||
+ | cont int velikost = 5; | ||
+ | float krychle[velikost][velikost][velikost] | ||
+ | |||
+ | // pole o 5 rozměrech alokující pro každou sekundu z století jeden bajt s možností adresace na rok: | ||
+ | char stoleti[100][365][24][60][60]; | ||
+ | </ | ||
+ | Zkuste spočítat jak by bylo veliké pole '' | ||
+ | |||
+ | ==== Incializace ==== | ||
+ | Prvky pole můžeme opět v rámci | ||
+ | |||
+ | === Příklad dvourozměrného pole === | ||
+ | Matice identity ([[https:// | ||
+ | <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 | | ||
+ | | ||
+ | </ | ||
+ | ==== 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(" | ||
+ | } | ||
+ | putchar(' | ||
+ | putchar(' | ||
+ | } | ||
+ | </ |