Uvod v 3D matrike na C

Array je skupina elementov z enakim (homogenim) tipom podatkov. Imenuje se tudi izpeljana vrsta podatkov. Kot smo že opazili, 3D matrika prostor eksponentno poveča in doda dodaten položaj za iskanje elementa v matriki. V tej temi bomo spoznali 3D matrike v C.

Na primer, razmislite o 4-stopenjski zgradbi s številnimi režami za parkiranje koles. Torej, tukaj, da dobimo popolne smerne reže kolesa, ki je parkirano, moramo nivo ravni povedati s številko vrstice in stolpca. Ko samo poveš matriki, vrstici 7 in stolpcu 4, katero raven išče? Ta 3D matrika je namenjena shranjevanju več količine podatkov in predstavljanju pozicij.

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

Sintaksa:

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

Tako lahko na enak način razglasimo 3-D matriko kot:

Pomen zgornje predstavitve lahko razumemo kot:

  1. Pomnilnik, dodeljen spremenljivki c, je vrste podatkov int.
  2. Skupna zmogljivost tega sklopa je 2 * 3 * 4, kar je 24 elementov.
  3. Podatki so predstavljeni v obliki dveh nizov s po 3 vrsticami in 4 stolpci.
Stolpci
c (0) Niz Vrsticec (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
Stolpci
c (1) Niz Vrsticec (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)

Podatki znotraj matrike so dostopni prek zgornje predstavitve. V predstavitvi 3D matrikov prvi kvadratni oklepaj predstavlja raven matrike, ki jo je treba upoštevati, drugo bi bilo število vrstic, tretje pa število stebrov.

Indeksna predstavitev matrike za prvi element se vedno začne z ničlo in konča z velikostjo-1. Na primer, če je število vrstic 3, potem bo indeksna reprezentacija za dostop do podatkov v vrsticah 0, 1 in 2. Ista logika velja tudi za indekse ravni in stolpcev. Za zgornjo predstavitev, da dobimo podatke 1. stopnje matrike z 2. stolpcem 3. vrstice, lahko dostopamo s c (0) (1) (2).

Inicializacija 3D-nizov na C

Lahko inicializiramo 3D matriko, podobno 2-D matriki.

Kot že omenjeno, bi bilo skupno število elementov, ki se lahko prilegajo v matriko, matrika1 * arraysize2 * arraysize3. Tu je 2 * 4 * 3, kar daje 24.

Vstavljanje elementov:

Podobno kot 2D matrika moramo tudi za vstavljanje elementov v 3-D matriko vstaviti podatke v ravni, 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.

Koda:

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

Kot je razvidno iz kode:

  1. Najprej razglasimo matrično spremenljivko in dimenzije matrike s številom stopenj matrike, vrstic in stolpcev.
  2. Nato razglasimo tri spremenljivke za iteracijo nad elementi v matriki.
  3. Nato se za zanke uporabljajo. Prva zanka je za iteracijo nivojev, druga za vrstice in tretja zanka za stolpce.
  4. Funkcija Scanf se uporablja za branje podatkov med vnašanjem in nato postavimo vrednost, vstavljeno na tista mesta i, j in k.

V zgornjem primeru smo podatke vstavili v matrico, ki ima 2 nivoja, 4 vrstice 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:

Posodobi elemente:

Posodobitev elementov v matriki je mogoče izvesti z določitvijo določenega elementa, ki ga je treba zamenjati, ali z določitvijo položaja, 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 poiskati ta element v matriki, razumeti njegov položaj in nato stari element nadomestiti z novim.

Tukaj smo v nadaljevanju podali dva primera posodobitve elementa 3D matrike.

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

Koda

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

V zgornjem programu je izbran element na 1. nivoju, 1. vrstici in 1. 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.

Koda:

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

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

Ali lahko poskusite napisati program pri posodabljanju celotnega stolpca matrice z uporabniško vnesenimi vrednostmi?

Zdaj, kot vemo, v matriki 3D sami razglasimo velikost matrike na začetku. Zavedamo se velikosti matrike, toda kaj, če uporabnik dodeli naključno številko vrstice in stolpca zunaj naše velikosti?

Kaj pa, če v polje vnesemo več elementov, kot je potrebno?

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.

Kot zadnji primer vas ne zanima, kaj se zgodi, če nekaj elementov preskočimo vmes? Kaj počne moj program?

Kot je razvidno iz zgornjega izida:

  1. Pogrešali smo 4 vrednosti v vhodu, le tako, da smo dali prostor in pritisnili enter
  2. Ampak dobili smo to področje, da vnesemo še štiri preostale elemente.
  3. Nato smo določili zadnjo raven, zadnjo vrstico in zadnji element stolpca, ki ga je treba spremeniti v 78. In izhod je po pričakovanjih, kajne?

Brisanje elementov

Po konceptih vstavljanja in posodabljanja podatkov v 3D-nizu poglejmo, kako lahko iz matrike izbrišemo celo vrstico.

Program smo napisali v preprosti obliki, tako da je mogoče koncepcijo različnih operacij enostavno razumeti.

Koda:

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

)
j ++;
)

drugače
(
za (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ("\ n");
)
printf ("\ n");
)
)

Vzpostavite vrednosti matrike dinamično. Naslednji koraki so:

  1. Uporabnika prosimo, da vnese številko (indeks) vrstice, ki jo je treba izbrisati.
  2. Uporablja se za iteracijo v zanki ravni matrike, vrstic in stolpcev. Primerjamo, če se številka vrstice in številka uporabniškega vnosa ujemata ali ne.
  3. Če se ujemata in če je številka vrstic manjša od velikosti matrike, tiskamo naslednjo vrstico. Drugače, tiskamo vrstico takšno, kot je.
  4. Ker na ravni matrike nismo imeli pogoja, je navedena vrstica izbrisana iz obeh ravni matrike.

Izhod je naslednji:

Kaj pa, če damo š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 dinamičnega števila 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 3d matriko?

Sklep

V tem razdelku smo spoznali osnovne operacije na tridimenzionalnih nizih.

3D matrika vsebuje veliko nizov dvodimenzionalnih nizov. Kot smo videli šahovnico kot primer 2D matrike, če bi nam postavili veliko šahovskih desk skupaj, nam lahko 3D matrika najprej pomaga, da izberemo šahovnico, s katero se želite igrati, nato pa poiščite vrstice in stolpce te šahovnice.

Poskusite rešiti osnovne operacije 3d nizov in se zabavajte pri učenju C.

Priporočeni članki

To je vodnik za 3D matrike v C. Tukaj razpravljamo o inicializaciji 3D matrike, podobne 2D matriki in elementom Array. Če želite izvedeti več, si oglejte tudi naslednji članek -

  1. Nizi v R
  2. Vrste podatkov v MATLAB
  3. Kako ustvariti matrike v C #?
  4. Kako so definirani 3D matriki v Javi?
  5. Nizi v PHP