Вишедимензионални низ – дефиниција¶
Хајде да искористимо оно што смо досад научили. Креирајмо и иницијализујмо три једнодимензионална низа a, b, c са по пет целих бројева:
int a[5] = {1, 2, 3, 4, 5};
int b[5] = {6, 7, 8, 9, 10};
int c[5] = {11, 12, 13, 14, 15};
Да видимо шта се дешава у меморији.

Добили смо један нови низ који се састоји од три низа који су у меморији поређани један за другим. Да видимо како можемо направити једну нову променљиву којом би приказали сва три низа.
Посматрајмо ово мало другачије. Можемо низове да поставимо један испод другог у виду табеле и да сваки означимо новим индексом. Назовимо ту нову променљиву А и доделимо сваком реду индекс.

У математици овакав распоред се назива матрица. Матрица има свој ред (врсту) и своју колону.

Хајде да елементима матрица А доделимо одговарајуће индексе и представимо их математички.

Шта примећујете? Као и код једнодимензионалног низа, индекси почињу од нуле. Овде имамо два индекса. Први индекс означава индекс реда, а други индекс колоне. Значи, ако за индекс реда уведемо променљиву \(i\), а за индекс колоне \(j\), добићемо општи члан матрице \(А_{ij}\).
С обзиром да у коду нисмо у могућности да на овај начин напишемо индексе,
послужићемо се синтаксом једнодимензионалног низа и додаћемо још једну угласту
заграду. Ако уз сваки индекс реда додамо индекс колоне у којој се елеменат
налази, долазимо до тога да сваки елемент има у себи два индекса: индекс реда
и индекс колоне А[red][kolona]
.
Долазимо до израза A[i][j]
.
У меморији су они сада смештени и означени на следећи начин:

Као и код једнодимензионалног низа, и овде морамо унапред резервисати меморијски простор за смештање елемената низа. Тако долазимо до синтаксе за дефинисање матрице.
tip_elemenata ime_niza [br_redova][br_kolona];

Дефинисати матрицу B која садржи целе бројеве и има 3 реда и 4 колоне.
Решење: int B[3][4];

Задатак: Дефинисати матрицу C која садржи податке типа double и има 5 редова и 4 колоне.
Решење: double C[5][4];

Питање: Колико највише елемената може да се смести у низ A[5][12]
?
Решење: Максималан број елемената је 60.
Хајде да уопштимо. Нека број редова буде r
, а број колона k
.

Шта примећујеш? Последњи индекс реда је r-1
, а колоне k-1
.
Ово је јако битно јер се увек даје број редова и колона, а индекси почињу увек од нуле.
Посматрајмо ово као лист папира и додајмо још једну димензију која ће престављати број листа (слоја).

Направимо још један овакав лист тако што ћемо индекс листа означити са један.

Направимо l-ти овакав лист и поставимо их један иза другог.

На овај начин добили смо један тродимензионални низ који се састоји из одређеног броја редова, колона и листова (слојева) и код кога је сваки елемент дефинисан са три индекса.

Долазимо до дефиниције тродимензионалног низа:
tip_elemenata ime_niza [br_redova][br_kolona][br_slojeva];

Дефинисати тродимензионални низ B
који садржи целе бројеве и има 3
реда, 3 колоне и 3 листа (слоја).
Решење: int B[3][3][3];

Дефинисати тродимензионални низ C
који садржи податке типа double
и има 5 редова, 4 колоне и 2 листа (слоја).
Решење: double C[5][4][2];

Колико највише елемената може да се смести у низ A[5][12][5]
?
Решење: Максималан број елемената је 300.

Навести један карактеристичан предмет који се може назвати тродимензионалним низом.
Решење: Рубикова (мађарска) коцка.

Математички можемо додати четврту, пету, шесту… n-ту димензију, али то је домен више математике.
Долазимо до дефиниције n-димензионалног низа:
tip_elemenata ime_niza [br_dimenziје_1][br_dimenziје_2][ br_dimenziје_3].....[ br_dimenziје_n];
Ми даље настављамо да анализирамо дводимензионални низ (матрицу). Ако научите како се ради са матрицама, научићете да радите и са низом од било колико димензија.