Увод у дводимензионалне низове на Ц

Низ је група елемената са истим (хомогеним) типом података. Назива се и изведеним типом података. Ако узмемо у обзир примитивни тип података и доделимо вредност као што је приказано у наставку,

А сада, ако желимо да похранимо нову вредност у променљиву а, нова вредност замењује стару вредност. Користећи једну примитивну варијаблу можемо похранити само једну вриједност одједном, не можемо похранити више вриједности.

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

Концепти у 2-Д низовима у Ц

Можемо дефинирати низове у

  • Једнодимензионално
  • Дводимензионални

И тако даље до Н-димензије засноване на захтеву. Али овде ћемо се позабавити двосмерним низовима. Као што име сугерира, 2-Д Низови могу бити матрични приказ података, који су створени да имплементирају релациону структуру података попут базе података и могу се похранити у табеларне облике. Омогућава једноставно чување збирних података који се могу проследити било којем броју функција на основу захтева. Подацима у овим низовима може се приступити путем ИД-а редака и ступаца.

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

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

Синтакса

На исти начин, 2-Д матрицу можемо декларисати као:

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

  1. Меморија додељена променљивој б је типа података инт.
  2. Подаци су представљени у облику 2 реда и 3 колоне.


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

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

Иницијализација низова

Имамо две различите методе у иницијализацији вредности у Ц. Методе се разликују само синтактички.

Испод је један од њих.

Други начин иницијализације је следећи:

Генерално, преферира се прва метода иницијализације јер јасно можемо разумети и визуелизовати редове и ступце 2-Д низова у Ц.

Испод је пример сликовног приказа елемената и њихове адресе за низ б.

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

Уметање елемената у дводимензионалне низове

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

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

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

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

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

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

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

Ажурирајте елементе у 2-Д матрима

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Брисање елемената у 2-Д низовима

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

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

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

Следећи кораци су:

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

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

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

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

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

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

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

Закључак

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

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

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

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

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

  1. Арраис ин Р
  2. Предности Арраи-а
  3. Низи у Ц ++
  4. Низи у ЈаваСцрипт-у
  5. Примери низа у Ц #
  6. Низи у ПХП-у

Категорија: