Vícerozměrné pole
Pole používáme pro uložení více hodnot stejného datového typu. Podobně můžeme použít vícerozměrné pole, kde informace organizujeme jako řádky a sloupce. Dvojrozměrné pole zvolíme například pro reprezentaci pole šachovnice nebo matice v matematických úlohách, trojrozměrné pole si můžeme představit jako kostku nebo kvádr v prostoru.
Deklarace vícerozměrného pole:
int cisla[5][10] ; //dvojrozměrné pole celých čísel velikosti 5x10
char sachovnice[8][8]; //pole znaků 8x8
float pole[3][5][10]; //trojrozměrné pole
Přístup k jednotlivým hodnotám v poli zajistíme, stejně jako v jednorozměrném poli, přes indexy. Pokud chceme projít všechny hodnoty v poli, musíme použít tolik vnořených smyček, kolik je rozměr pole. U dvojrozměrného pole tedy potřebujeme 2 smyčky: jednou smyčkou projdeme celý řádek a ve druhé (nadřazené) projdeme potom všechny řádky.
int cisla[10][20]; //pole může obsahovat maximálně 10x20 celých čísel //muzeme tedy mit maximalne 10 radku a 20 sloupcu int pocet_radku, pocet_sloupcu, i, j; //doplnit kód pro zjištění počtu řádků (pocet_radku) // a počtu sloupců (pocet_sloupcu), maximální rozměr 10x20 //nasleduje kod pro prochazeni dvourozmerneho pole for(i = 0; i < pocet_radku; i++) //opakování pro všechny řádky { for(j = 0; j < pocet_sloupcu; j++) //procházení jednoho řádku { // zpracování hodnoty cisla[i][j] (načtení, výpis, součet,...) } }
Vícerozměrné pole jako parametr funkce
Vícerozměrné pole můžeme stejně jako jednorozměrné použít ve funkcích jako parametr. Podstatné je, že zase platí: pole jako parametr můžeme požít jako vstup a zároveň jako výstup z funkce. Jediný rozdíl je, že u vícerozměrného pole musíme uvést v hranatých závorkách všechny rozměry pole kromě prvního.
/* ----- funkce pro vypsani vsech cisel ve 2D poli -------- - MAX urcuje maximalni rozmer pole - konstantu MAX muzeme definovat napr. pouzitim define na zacatku programu - parametrem funkce je pole, druhý maximalni rozmer musime uvest - dalsimi parametry jsou aktualni rozmery pole (pocet radku a pocet sloupcu) */ void vypis_pole(int pole[][MAX], int rpocet, int spocet) { int i, j; printf("\nHodnoty : \n"); for(i=0; i < rpocet; i++) //pro vsechny radky { for (j=0; j < spocet; j++) //prochazeni jednoho radku { printf("%5d", pole[i][j]); } printf("\n"); //na konci radku odradkujeme } }
POZNÁMKA: V případě, že je velikost pole po celou dobu stejná, uvádíme jako parametr jen pole. Nepotřebujeme navíc aktuální rozměr pole. Např. píšeme program, kde dvourozměrné pole představuje šachovnici. Potom nám stačí konstantu MAX nastavit na 8 a ve smyčkách pro práci s polem použít MAX místo pocet.