Увод у дводимензионалне низове на Ц
Низ је група елемената са истим (хомогеним) типом података. Назива се и изведеним типом података. Ако узмемо у обзир примитивни тип података и доделимо вредност као што је приказано у наставку,
А сада, ако желимо да похранимо нову вредност у променљиву а, нова вредност замењује стару вредност. Користећи једну примитивну варијаблу можемо похранити само једну вриједност одједном, не можемо похранити више вриједности.
За складиштење више од једног елемента у једној променљивој, као што су студентске оцене, ИД-ови запослених, бројеви мобилних телефона са великом количином података, морамо створити 100 јединствених променљивих, што је врло сложен задатак. Зато је уведен концепт Арраис-а.
Концепти у 2-Д низовима у Ц
Можемо дефинирати низове у
- Једнодимензионално
- Дводимензионални
И тако даље до Н-димензије засноване на захтеву. Али овде ћемо се позабавити двосмерним низовима. Као што име сугерира, 2-Д Низови могу бити матрични приказ података, који су створени да имплементирају релациону структуру података попут базе података и могу се похранити у табеларне облике. Омогућава једноставно чување збирних података који се могу проследити било којем броју функција на основу захтева. Подацима у овим низовима може се приступити путем ИД-а редака и ступаца.
Како их можемо дефинисати и имплементирати? Где их можемо користити? Даље, разумемо те концепте.
У Ц, димензионални низови могу се декларисати на следећи начин:
Синтакса
На исти начин, 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));
)
)
)
Као што је примећено у коду:
- Прво декларишемо променљиву матрицу и димензије поља са бројем редова и ступаца.
- Затим изјављујемо две променљиве за понављање елемената у низу.
- Затим, за петље се користе. Спољашња петља је за итерацију редова, а унутрашња петља за ступове.
- Функција Сцанф користи се за читање података док уносимо, а затим постављамо вредност уметнуту у оне положаје и и ј.
У горњем примеру смо податке уметнули у матрицу која има 2 реда и 3 колоне. Резултат следећег може се добити на следећи начин:
Како нисмо користили функцију принтф за приказ резултата, написани програм је прочитао само унесене вредности од стране корисника. Након писања функције штампања (користећи петље), излаз ће се приказати као:
Ажурирајте елементе у 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));
)
)
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");
)
)
Следећи кораци су:
- Вриједности матрице узимајте динамички
- Од корисника се тражи да унесе број (индекс) ретка који мора бити избрисан.
- Користећи за итерацију петље, успоређујемо да ли се број ретка и кориснички унос броја подударају или не.
- Ако се подударају и ако је број реда мањи од величине низа, исписујемо сљедећи ред. Иначе, штампамо ред какав јесте.
Излаз је следећи:
Шта ако, додам број реда изван границе поља?
Неће пронаћи ред за брисање и напуштање програма исписом целог низа.
Као што је већ познато, чак можемо динамички декларисати вредности за бројеве редака и ступаца и у складу с тим написати програм.
Зар ово не изгледа једноставно и лако се научи?
Можете ли покушати сада избрисати одређени елемент за 2-д низ?
Закључак
У овом одељку научили смо основне операције на дводимензионалним низовима. Ова 2-д поља су корисна у реалном времену са операцијама матрице и многим математичким прорачунима.
Низови се могу користити и за приказивање календара, положаја на паркингу, а можемо чак и шах.
Многе друге структуре података као што су повезане листе, ред чекања, графикони, дрвеће морају користити овај концепт 2-Д низова као основни захтев за складиштење и приступ локацијама различитих елемената. Покушајте ријешити основне операције 2д матриза и забавите се учећи Ц.
Препоручени чланци
Ово је водич за дводимензионалне низове у Ц. Овде разговарамо о уводу, иницијализацији низова, уметању, ажурирању, брисању елемената у дводимензионалним низовима. Такође можете погледати следеће чланке да бисте сазнали више -
- Арраис ин Р
- Предности Арраи-а
- Низи у Ц ++
- Низи у ЈаваСцрипт-у
- Примери низа у Ц #
- Низи у ПХП-у