headerphoto

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 15x10
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 jadnorozměrné použít ve funkcích jako parametr. Podstatné je, že zase platí, že pole jako parametr můžeme požít jako vstup a zároveň jako výstup z funkce. Jediný rozdíl proti použití jednorozměrného pole je, že u vícerozměrného pole musíme uvést v hranatých závorkách všechny rozměry kromě prvního.

    /*   -----   funkce pro vypsani vsech cisel ve 2D poli   --------
    
    - pro zjednoduseni predpokladame,  ze mame stejny pocet radku a sloupcu
    - jejich maximalni hodnota je dana konstantou MAX
    - konstantu MAX muzeme definovat napr. pouzitim define na zacatku programu
    - parametrem funkce je pole, druhý maximalni rozmer musime uvest
    - druhym parametrem je realny rozmer pole (pocet)
    */
    
    void vypis_pole(int pole[][MAX], int pocet)
    {
        int i, j;
        printf("\nHodnoty : \n");
        for(i=0; i < pocet; i++)         //pro vsechny radky
        {
       	    for (j=0; j < pocet; j++)    //prochazeni jednoho radku
             {
                   printf("%3d", 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.

Design downloaded from Free Templates - your source for free web templates