Увод у 3Д низове на Ц

Низ је група елемената са истим (хомогеним) типом података. Назива се и изведеним типом података. Као што смо већ примјетили, 3Д низ повећава простор експоненцијално и додаје се додатни положај за лоцирање елемента у низу. У овој теми ћемо сазнати о 3Д низовима у Ц.

На пример, узмите у обзир зграду на 4 нивоа са много утора за паркинг за бицикле. Дакле, овде да бисмо добили савршене смернице за бицикл који је паркиран, морамо да означимо ниво нивоа са бројем реда и ступаца. Кад само кажете матрици, ред 7 и ступац 4, који ниво тражи? Овај 3Д низ је само за смештање више количина података и представљање позиција.

Како их можемо дефинисати и имплементирати? Даље, разумемо те концепте.

Синтакса:

У Ц, димензионални низови могу се декларисати на следећи начин:

Дакле, на исти начин можемо прогласити 3-Д низ као:

Значење горњег приказа може се схватити као:

  1. Меморија додељена променљивој ц је типа података инт.
  2. Укупни капацитет који овај низ може да држи је 2 * 3 * 4, што је једнако 24 елемента.
  3. Подаци су представљени у облику 2 низа са 3 реда и 4 колоне.
Колоне
ц (0) Низ Редовиц (0) (0)ц (0) (1)ц (0) (2)ц (0) (3)
ц (1) (0)ц (1) (1)ц (1) (2)ц (1) (3)
ц (2) (0)ц (2) (1)ц (2) (2)ц (2) (3)
Колоне
ц (1) Низ Редовиц (0) (0)ц (0) (1)ц (0) (2)ц (0) (3)
ц (1) (0)ц (1) (1)ц (1) (2)ц (1) (3)
ц (2) (0)ц (2) (1)ц (2) (2)ц (2) (3)

Подаци унутар матрице могу се приступити кроз горњу представу. У приказу 3Д низова, први квадратни заград представља ниво матрице који треба узети у обзир, други би био број редова, а трећи је број ступаца.

Индексна репрезентација низа за први елемент увијек почиње с нулом и завршава величином-1. Тако, на пример, ако је број редова 3, тада ће репрезентација индекса за приступ подацима у редовима бити 0, 1 и 2. Иста логика важи и за индекс нивоа поља и индекса ступаца. Да би добили податке првог нивоа низа са 2. редом 3. колона, до горњег приказа, можемо приступити помоћу ц (0) (1) (2).

Иницијализација 3Д низова на Ц

Можемо иницијализовати 3Д низ сличан 2-Д матрици.

Као што је горе споменуто, укупан број елемената који се могу уклопити у низ би био матрица1 * арраисизе2 * арраисизе3. Ево 2 * 4 * 3, што даје 24.

Уметање елемената:

Слично 2Д пољу, за уметање елемената у 3-Д низ морамо да унесемо податке у нивое, редове и ступце. Дакле, за ово користимо концепт петље. У горњем поступку за иницијализацију података у низу, унапријед смо дефинирали вриједности.

Овде корисник може динамички уметнути елементе, у складу са захтевима. Испод је пример кода за уметање елемената.

Шифра:

#include
int main()
(
int c(2)(4)(3);
int i, j, k;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
)

Као што је примећено у коду:

  1. Прво декларишемо променљиву матрицу и димензије поља са бројем нивоа матрице, редова и ступаца.
  2. Затим изјављујемо три променљиве за понављање елемената у низу.
  3. Затим, за петље се користе. Прва петља је за итерацију нивоа, друга је за редове, а трећа је за ступове.
  4. Функција Сцанф користи се за читање података док уносимо, а затим постављамо вредност уметнуту у оне положаје и, ј и к.

У горњем примеру смо податке уметнули у матрицу која има 2 нивоа, 4 реда и 3 колоне. Резултат следећег може се добити на следећи начин:

Како нисмо користили функцију принтф за приказ резултата, написани програм је прочитао само унесене вредности од стране корисника. Након писања функције штампања (користећи петље), излаз ће се приказати као:

Ажурирај елементе:

Ажурирање елемената у низу може се обавити или одређивањем одређеног елемента који треба заменити или идентификовањем позиције на којој се мора извршити замена. За ажурирање обично захтевамо следеће детаље.

  1. Елементи низа
  2. Позиција / елемент, где га треба уметнути
  3. Вредност коју треба уметнути.

За ажурирање података у низу кроз детаље о елементима, прво морамо потражити тај елемент у низу, разумети његов положај, а затим стари елемент заменити новим.

Ево, у наставку смо дали два примера ажурирања елемента 3Д матрице.

Прво, идемо кроз пример где је положај елемента који се ажурира већ познат.

Код

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
c(1)(1)(1) = 85;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

У горњем програму одабран је елемент на првој разини, првом реду и првом ступцу и вриједност података на том положају је ажурирана.

Излаз за горе је следећи:

У другом примјеру показаћемо како се елемент елемента може динамички узети као вриједност коју уноси корисник и ажурирати вриједност елемента на тој одређеној позицији.

Шифра:

#include
int main()
(
int c(2)(4)(3);
int i, j, k, num;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the level, row and column number: ");
scanf("%d %d %d", &i, &j, &k);
printf("Enter the new number you want to update with: ");
scanf("%d", &num);
c(i)(j)(k) = num;
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
printf("\t%d", c(i)(j)(k));
)
printf("\n");
)
printf("\n");
)
return 0;
)

Излаз је следећи. Овде смо користили функцију сцанф да бисмо прочитали вредност коју корисник даје према њиховом избору за положај елемента на основу нивоа низа, бројева редака и ступаца.

Можете ли покушати да напишете програм у ажурирању целог ступца матрице са вредностима које уносе корисници?

Сада, као што знамо, у 3Д пољу изјављујемо величину матрице на самом почетку. Знамо за величину низа, али шта ако корисник даје случајни број реда и ступца изван наше величине?

Шта ако у низ унесемо више елемената него што је потребно?

Примјетите да, како нисмо написали ниједан услов иф / елсе или покушајте / ухватите блокове, излаз матрице се не мијења. Међутим, код можемо написати користећи горе наведене услове да прикажемо грешке за такве случајеве.

Као последњи пример, нисте ли знатижељни, шта се дешава ако између њих прескочимо неке елементе? Шта ради мој програм?

Као што је примећено у горе наведеном резултату:

  1. Пропустили смо 4 вредности на улазу, само давањем простора и притиском на ентер
  2. Али имали смо ту могућност да унесемо преостала 4 елемента.
  3. Затим смо одредили последњи ниво, последњи ред и последњи елемент колоне који треба променити у 78. А излаз је очекиван, зар не?

Брисање елемената

Након концепата уметања и ажурирања података унутар 3Д матрице, сада да видимо како можемо избрисати читав ред из поља.

Написали смо програм у једноставном формату, тако да се концепт различитих операција може лако разумети.

Шифра:

#include
int main()
(
int c(2)(4)(3), i, j, k, num, x;
printf("Enter elements into 3-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
for(k=0;k<3;k++)
(
scanf("%d", &c(i)(j)(k));
)
)
)
printf("Enter the value of row number to delete: ");
scanf("%d", &x);
for(i=0;i<2;i++)
(
for(j=0;j<4;j++)
(
if(j==x)
(
for(k=0;k<3;k++)
(
if((j+1)<4)
(
printf("\t%d", c(i)(j+1)(k));
)

)
ј ++;
)

друго
(
за (к = 0; к <3; к ++)
(
принтф („\ т% д“, ц (и) (ј) (к));
)
)
принтф ("\ н");
)
принтф ("\ н");
)
)

Вриједности матрице прихваћате динамички. Слиједећи кораци су:

  1. Од корисника се тражи да унесе број (индекс) ретка који мора бити избрисан.
  2. Користи се за итерацију петље нивоа, редова и ступаца у петљи. Упоређујемо да ли се број реда и кориснички број уноса подударају или не.
  3. Ако се подударају и ако је број реда мањи од величине низа, исписујемо сљедећи ред. Иначе, штампамо ред какав јесте.
  4. Овде, како нисмо имали услова на нивоу матрице, наведени број реда брише се са оба нивоа поља.

Излаз је следећи:

Шта ако, додијелимо број реда изван границе поља?

Неће пронаћи ред за брисање и напуштање програма исписом целог низа.

Као што је већ познато, чак можемо динамички декларисати вредности за број редака и ступаца и у складу с тим написати програм.

Зар ово не изгледа једноставно и лако се научи?

Да ли можете да покушате да сада покушате да избришете одређени елемент за 3Д низ?

Закључак

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

3Д низ садржи много сетова 2-Д низова. Као што смо видели шаховску плочу као пример 2Д матрице, ако бисмо заједно поставили много шаховских дасака, 3Д низ нам може помоћи да прво изаберемо шаховницу са којом желите да играте, а затим идите на редове и ступове те шаховнице.

Покушајте ријешити основне операције 3Д низова и забавите се учећи Ц.

Препоручени чланци

Ово је водич за 3Д матрице у Ц. Овде смо расправљали о иницијализацији 3Д матрице сличне 2Д матрици и елементима Арраи. Такође можете погледати следећи чланак да бисте сазнали више -

  1. Арраис ин Р
  2. Типови података у МАТЛАБ-у
  3. Како створити низ у Ц #?
  4. Како је 3Д низ дефиниран у Јави?
  5. Низи у ПХП-у

Категорија: