Uvod v 2-D matrike na C

Array je skupina elementov z enakim (homogenim) tipom podatkov. Imenuje se tudi izpeljana vrsta podatkov. Če upoštevamo primitivni tip podatkov in dodelimo vrednost, kot je prikazano spodaj,

In zdaj, če želimo novo vrednost shraniti v spremenljivko a, nova vrednost nadomesti staro vrednost. Z eno primitivno spremenljivko lahko hranimo samo eno vrednost hkrati, ne moremo shraniti več vrednosti.

Za shranjevanje več kot enega elementa v eni spremenljivki, kot so študentske znamke, ID-ji zaposlenih, mobilne številke z veliko količino podatkov, moramo ustvariti 100 edinstvenih spremenljivk, kar je zelo zapletena naloga. Zato je bil uveden koncept Arrays.

Koncepti v dvodimenzionalnih nizih na C

Niz lahko definiramo v

  • Enorazsežnost
  • Dvodimenzionalni

In tako naprej do N-dimenzijskih, ki temeljijo na zahtevi. Ampak tukaj se bomo ukvarjali z 2-D matriki. Kot že ime pove, so lahko dvodimenzionalni matriki matrični prikaz podatkov, ki so ustvarjeni za izvajanje strukture podatkov v relacijski podatkovni bazi, podobni lookaliki in so lahko shranjeni v tabelarnih oblikah. Omogoča enostavno shranjevanje zbirnih podatkov, ki jih je mogoče posredovati poljubnemu številu funkcij glede na zahtevo. Do podatkov v teh nizih lahko dostopate prek id vrstic in stolpcev.

Kako jih lahko določimo in izvajamo? Kje jih lahko uporabimo? Če gremo dalje, razumemo te koncepte.

V C je dimenzijske matrike mogoče razglasiti na naslednji način:

Sintaksa

Na enak način lahko dvodimenzionalni niz razglasimo kot:

Pomen zgornje predstavitve lahko razumemo kot:

  1. Pomnilnik, dodeljen spremenljivki b, je vrste podatkov int.
  2. Podatki so predstavljeni v obliki 2 vrstic in 3 stolpcev.


Podatki znotraj matrike so dostopni prek zgornje predstavitve. V 2-D matrični predstavitvi prvi kvadratni oklepaj predstavlja število vrstic, drugi pa za število stolpcev. Indeksna predstavitev matrike za prvi element se vedno začne z ničlo in konča z velikostjo-1. Spremenljivka matrike (tukaj b) vedno vsebuje osnovni naslov pomnilniškega bloka in se imenuje notranja spremenljivka kazalca.

Če je na primer število vrstic 3, potem bo indeksna reprezentacija za dostop do podatkov v vrsticah 0, 1 in 2. Enaka logika velja tudi za indekse stolpcev. Za zgornjo predstavitev lahko dobimo podatke 2. stolpca 2. vrstice do b (1) (2).

Inicializacija matrikov

Imamo dve različni metodi za inicializacijo vrednosti v C. Metode se razlikujejo samo skladenjsko.

Spodaj je ena izmed njih.

Drug način inicializacije je naslednji:

Na splošno je prednostna metoda inicializacije, saj lahko jasno razumemo in vizualiziramo vrstice in stolpce 2-D matrikov v C.

Spodaj je primer slikovne predstavitve elementov in njihovega naslova za niz b.

Elementi matrike so ponavadi shranjeni na zaporednih pomnilniških mestih, ki temeljijo na podatkovni vrsti elementov.

Vstavljanje elementov v 2-D matrike

Za vstavljanje elementov v 2-D matrike moramo podatke vstaviti v vrstice in stolpce. Torej, za to uporabljamo koncept zank. V zgornjem postopku za inicializacijo podatkov v matriki smo vnaprej določili vrednosti.

Tu lahko elemente uporabnik dinamično vstavi v skladu z zahtevami. Spodaj je primer kode za vstavljanje elementov.

#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));
)
)
)

Kot je razvidno iz kode:

  1. Najprej razglasimo spremenljivko matrike in dimenzije matrike s številom vrstic in stolpcev.
  2. Nato razglasimo dve spremenljivki za iteracijo nad elementi v matriki.
  3. Nato se za zanke uporabljajo. Zunanja stran zanke je za iteracijo vrstic, notranja zanka pa za stolpce.
  4. Funkcija Scanf se uporablja za branje podatkov med vnašanjem in nato vstavljeno vrednost na tiste položaje i in j.

V zgornjem primeru smo podatke vstavili v matrico, ki ima 2 vrstici in 3 stolpce. Rezultat naslednjega je mogoče dobiti na naslednji način:

Ker za prikaz izhoda nismo uporabili funkcije printf, je napisan program prebral samo vrednosti, ki jih je vnesel uporabnik. Po pisanju funkcije tiskanja (za zanke) se izpis prikaže kot:

Posodobite elemente v 2-D matrikah

Posodobitev elementov v matriki je mogoče izvesti tako, da določite določen element, ki ga je treba zamenjati, ali tako, da določite položaj, kjer je treba zamenjati. Za posodobitev običajno potrebujemo naslednje podrobnosti.

  1. Elementi matrike
  2. Položaj / element, kamor ga je treba vstaviti
  3. Vrednost, ki jo je treba vstaviti.

Za posodabljanje podatkov v matriki s podrobnostmi o elementih moramo najprej iskati ta element v matriki, razumeti njegovo pozicijo in nato stari element zamenjati z novim.

Tukaj smo v nadaljevanju podali dva primera posodabljanja elementa dvodimenzionalne matrike.

Najprej pojdimo skozi primer, ko je položaj elementa, ki ga je treba posodobiti, že znan.

#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;
)

V zgornjem programu so izbrani elementi v 1. in 3. stolpcu in vrednost podatkov v tem položaju je posodobljena.

Rezultat zgoraj je naslednji:

V drugem primeru bomo pokazali, kako lahko položaj elementa dinamično vzamemo kot uporabniško vneseno vrednost in posodobimo vrednost elementa na določenem položaju.

#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;
)

Tu smo uporabili funkcijo scanf za branje vrednosti, ki jo je uporabnik določil po svoji izbiri za položaj elementa, ki temelji na številkah vrstic in stolpcev.

Izhod je naslednji:

Ali lahko poskusite napisati program pri posodabljanju celotne vrstice matrice z uporabniško vnesenimi vrednostmi?

Zdaj, kot vemo, v 2-D matriki na samem začetku razglasimo velikost matrike. Zavedamo se velikosti matrike, toda kaj, če uporabnik poda naključno številko vrstic in stolpcev zunaj naše velikosti?

Upoštevajte, da se izhod matrice ne spreminja, saj nismo napisali nobenega pogoja if / else ali poskusite / ulovili. Vendar lahko kodo napišemo z uporabo zgoraj omenjenih pogojev za prikaz napak za takšne primere.

Brisanje elementov v dvodnevnih nizih

Po konceptih vstavljanja in posodabljanja podatkov znotraj matrike poglejmo, kako lahko iz matrike izbrišemo celo vrstico.

Program smo napisali v preprosti obliki, tako da lahko koncept različnih operacij v dvodnevnem polju razumemo brez težav.

#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");
)
)

Sledijo naslednji koraki:

  1. Vzpostavite vrednosti matrike dinamično
  2. Uporabnika prosimo, da vnese številko (indeks) vrstice, ki jo je treba izbrisati.
  3. Če uporabimo za iteracijo v zanki, primerjamo, ali se številka vrstice in številka uporabnika vneseta ali ne.
  4. Če se ujemata in če je številka vrstic manjša od velikosti matrike, tiskamo naslednjo vrstico. Drugače, tiskamo vrstico takšno, kot je.

Izhod je naslednji:

Kaj pa, če dam številko vrstice zunaj meje niza?

Vrstica za brisanje in izhod iz programa ne bo našla s tiskanjem celotnega niza.

Kot je že znano, lahko vrednosti za številke vrstic in stolpcev celo dinamično razglasimo in temu ustrezno napišemo program.

Ali to ni preprosto in enostavno za učenje?

Ali lahko poskusite zdaj izbrisati določen element za dvodimenzionalni niz?

Sklep

V tem razdelku smo spoznali osnovne operacije na dvodimenzionalnih nizih. Ti d-d matriki so uporabni v realnem času z matričnimi operacijami in številnimi matematičnimi izračuni.

Niz lahko uporabimo celo za prikazovanje koledarjev, umestitev na parkirišču in lahko imamo celo šahovsko igro.

Mnoge druge podatkovne strukture, kot so povezani seznami, čakalna vrsta, grafi, drevesa, morajo ta koncept dvodimenzionalnih nizov uporabiti kot osnovno zahtevo pri shranjevanju in dostopu do lokacij različnih elementov. Poskusite rešiti osnovne operacije 2d nizov in se zabavajte z učenjem C.

Priporočeni članki

To je vodnik za dvodimenzionalne matrike v C. Tukaj razpravljamo o uvodu, inicializaciji nizov, vstavljanju, posodabljanju, brisanju elementov v dvodimenzionalnih nizih. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Nizi v R
  2. Prednosti Array
  3. Nizi v C ++
  4. Nizi v JavaScript
  5. Primeri nizov v C #
  6. Nizi v PHP