Toto je starší verze dokumentu!
Vícerozmě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, že do 2D pole budeme ukládat informace o obsazenostech sedadel v kinosálu. Situaci bychom si mohli graficky znázornit např. takto:
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:
int kinosal[5][5]; int i, j; // Naplnění nulami for (j = 0; j < 5; j++) for (i = 0; i < 5; i++) 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.
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
for (j = 0; j < 5; j++) { for (i = 0; i < 5; i++) printf("%d", kinosal[i][j]); printf("\n"); }
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:
int kinosaly[4][4][3];
- Přístup k prvkům pole:
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):
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 } };
