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 | ||
| spse:pm1:vicerozmerne_pole [2021/02/15 21:12] – vytvořeno jenda | spse:pm1:vicerozmerne_pole [2024/07/07 16:48] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | ~~NOCACHE~~ | ||
| + | ~~REVEAL theme=dokuwiki& | ||
| + | |||
| ====== Vícerozměrná pole ====== | ====== Vícerozměrná pole ====== | ||
| ===== Dvourozměrné pole ===== | ===== Dvourozměrné pole ===== | ||
| - | Dvourozměrné pole si můžeme v paměti představit jako tabulku a mohli bychom takto reprezentovat např. rozehranou partii piškvorek. Pokud bychom se chtěli držet reálných aplikací, které budete později v zaměstnání tvořit, můžeme si představit, | + | * Dvourozměrné pole si můžeme v paměti představit jako tabulku a mohli bychom takto reprezentovat např. rozehranou partii piškvorek. Pokud bychom se chtěli držet reálných aplikací, které budete později v zaměstnání tvořit, můžeme si představit, |
| + | < | ||
| {{: | {{: | ||
| + | </ | ||
| + | * Kinosál by byl v praxi samozřejmě větší, ale jako ukázka nám toto pole postačí. 0 znamená volno, 1 obsazeno. Později bychom mohli doplnit i 2 - rezervováno a podobně. Pro tyto stavy by bylo správnější vytvořit nějaké konstanty, ale s tím se setkáme až později, takže si teď musíme vystačit pouze s čísly. | ||
| + | ----> | ||
| + | * 2D pole deklarujeme v C následujícím způsobem: | ||
| - | Kinosál by byl v praxi samozřejmě větší, ale jako ukázka nám toto pole postačí. 0 znamená volno, 1 obsazeno. Později bychom mohli doplnit i 2 - rezervováno a podobně. Pro tyto stavy by bylo správnější vytvořit nějaké konstanty, ale s tím se setkáme až později, takže si teď musíme vystačit pouze s čísly. | + | < |
| - | + | ||
| - | 2D pole deklarujeme v C následujícím způsobem: | + | |
| <code c> | <code c> | ||
| int kinosal[5][5]; | int kinosal[5][5]; | ||
| int i, j; | int i, j; | ||
| // Naplnění nulami | // Naplnění nulami | ||
| - | for (j = 0; j < 5; j++) | + | for (j = 0; j < 5; j++){ |
| - | for (i = 0; i < 5; i++) | + | for (i = 0; i < 5; i++){ |
| kinosal[j][i] = 0; | kinosal[j][i] = 0; | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| + | </ | ||
| + | <---- | ||
| + | ==== Modifikace ==== | ||
| + | * Nyní kinosál naplníme jedničkami tak, jak je vidět na obrázku výše. Protože budeme jako správní programátoři líní, využijeme k vytvoření řádku jedniček for cykly :) Pro přístup k prvku 2D pole musíme samozřejmě zadat 2 souřadnice. | ||
| + | |||
| + | < | ||
| + | <code c> | ||
| + | kinosal[2][2] = 1; // Prostredek | ||
| + | for (i = 1; i < 4; i++) // 4. radek | ||
| + | { | ||
| + | kinosal[i][3] = 1; | ||
| + | } | ||
| + | for (i = 0; i < 5; i++) // Posledni radek | ||
| + | { | ||
| + | kinosal[i][4] = 1; | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Výpis pole ==== | ||
| + | |||
| + | |||
| + | < | ||
| + | <code c> | ||
| + | for (j = 0; j < 5; j++) | ||
| + | { | ||
| + | for (i = 0; i < 5; i++) | ||
| + | printf(" | ||
| + | printf(" | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== N-rozměrná pole ===== | ||
| + | * Někdy může být příhodné vytvořit si pole o ještě více dimenzích. My všichni si jistě dokážeme představit minimálně 3D pole. S příkladem s kinosálem se nabízí případ užití, kdy má budova více pater (nebo obecně více kinosálů). Vizualizace by vypadala asi nějak takto: | ||
| + | < | ||
| + | {{: | ||
| + | </ | ||
| + | * Vytvoření 3D pole: | ||
| + | |||
| + | < | ||
| + | <code c> | ||
| + | int kinosaly[4][4][3]; | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * Přístup k prvkům pole: | ||
| + | |||
| + | < | ||
| + | <code c> | ||
| + | kinosaly[3][2][1] = 1; // Druhý kinosál, třetí řada, čtvrtý sloupec | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Inicializace pole ===== | ||
| + | * Ještě si ukážeme, že i vícerozměrná pole je možné rovnou inicializovat hodnotami (kód vytvoří rovnou zaplněný kinosál jako na obrázku): | ||
| + | |||
| + | |||
| + | < | ||
| + | <code c> | ||
| + | int kinosal[5][5] = { | ||
| + | { 0, 0, 0, 0, 1 }, | ||
| + | { 0, 0, 0, 1, 1 }, | ||
| + | { 0, 0, 1, 1, 1 }, | ||
| + | { 0, 0, 0, 1, 1 }, | ||
| + | { 0, 0, 0, 0, 1 } | ||
| + | }; | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Zdroje ==== | ||
| + | |||
| + | https:// | ||
| + | |||
| + | |||