Introduksjon til 3D Arrays i C

En array er en gruppe av elementer med samme (homogene) datatype. Det kalles også en Derived datatype. Som allerede lagt merke til, øker en 3D-matrise plassen eksponentielt, og en ekstra posisjon lagt til for å lokalisere elementet i matrisen. I dette emnet skal vi lære om 3D Arrays i C.

Tenk for eksempel på et bygning på 4 plan med mange spor for sykkelparkering. Så her for å få den perfekte sporretningen for sykkelen som er parkert, må vi fortelle nivånummeret med rad- og kolonnenummer. Når du bare forteller arrayen, rad 7 og kolonne 4, hvilket nivå søker den etter? Denne 3D-arrayen er bare for å lagre flere datamengder og representere posisjonene.

Hvordan kan vi definere og implementere dem? Gå videre, la oss forstå disse begrepene.

syntaks:

I C kan dimensjonale matriser deklareres som følger:

Så på samme måte kan vi erklære 3D-matrisen som:

Betydningen av representasjonen ovenfor kan forstås som:

  1. Minnet som er tildelt variabel c er av datatype int.
  2. Den totale kapasiteten som denne matrisen kan inneholde er 2 * 3 * 4, som er lik 24 elementer.
  3. Dataene blir representert i form av 2 matriser med 3 rader og 4 kolonner hver.
kolonner
c (0) Array raderC (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)
kolonner
c (1) Array raderC (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)

Dataene innenfor matrisen kan nås via representasjonen ovenfor. I 3D-arrays-representasjon representerer den første firkantede braketten nivået på matrisen som må tas i betraktning, det andre vil være antall rader, og den tredje er for antall kolonner.

Indeksrepresentasjonen for matrisen for det første elementet starter alltid med null og slutter med størrelse-1. Så hvis antall rader for eksempel er 3, vil indeksrepresentasjonen for tilgang til dataene i radene være 0, 1 og 2. Den samme logikken gjelder også for matrisenivået og kolonneindeksene. For å få representasjonen ovenfor, kan vi få tilgang til c (0) (1) (2) for å få dataene til 1. nivå av matrisen med 2. rad 3. kolonne.

Initialisere 3D Arrays i C.

Vi kan initialisere en 3D-matrise som ligner på 2-D-matrisen.

Som nevnt over, vil det totale antall elementer som kan passe inn i matrisen være arraysize1 * arraysize2 * arraysize3. Her er det 2 * 4 * 3, som gir 24.

Sette inn elementer:

På lik linje med 2D-matrisen, for å sette inn elementer i en 3-D-matrise, må vi sette inn dataene i nivåer, rader og kolonner. Så for dette bruker vi begrepet løkker. I prosessen ovenfor for å initialisere dataene i matrisen, hadde vi forhåndsdefinert verdiene.

Her kan elementer settes inn dynamisk av brukeren, i henhold til kravene. Nedenfor er en eksempelkode for å sette inn elementene.

Kode:

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

Som observert i koden:

  1. Først erklærer vi matvariabelen og dimensjonene til arrayen med antall nivåer i arrayen, rader og kolonner.
  2. Deretter erklærer vi tre variabler for å iterere over elementene i matrisen.
  3. Deretter brukes løkker. Den første sløyfen er for nivåer iterasjon, den andre er for radene og den tredje sløyfen er for kolonnene.
  4. Scanf-funksjonen brukes til å lese dataene som vi legger inn, og deretter plassere verdien som er satt inn på de stedene i, j og k.

I eksemplet ovenfor satte vi inn dataene i en matrise med 2 nivåer, 4 rader og 3 kolonner. Resultatet av følgende kan oppnås som nedenfor:

Siden vi ikke har brukt printf-funksjonen for å vise utdataene, hadde det skrevne programmet bare lest brukerens innførte verdier. Etter at du har skrevet utskriftsfunksjonen (bruker for løkker), vil utdataene vises som:

Oppdater elementer:

Oppdateringen av elementer i matrisen kan gjøres ved enten å spesifisere et bestemt element som skal erstattes, eller ved å identifisere en posisjon der utskiftingen må gjøres. For oppdatering krever vi vanligvis følgende detaljer.

  1. Elementer av en matrise
  2. Posisjon / element, der det må settes inn
  3. Verdien som skal settes inn.

For å oppdatere dataene i en matrise gjennom elementdetaljer, må vi først søke etter det elementet i matrisen, forstå deres plassering og deretter erstatte det gamle elementet med det nye elementet.

Her har vi gitt nedenfor to eksempler på oppdatering av elementet i en 3D-matrise.

For det første, la oss gå gjennom et eksempel der posisjonen til elementet som skal oppdateres allerede er kjent.

Kode

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

I programmet over blir elementet på 1. nivå, 1. rad og 1. kolonne valgt, og verdien av dataene i den posisjonen er oppdatert.

Output for ovenfor er som følger:

I det andre eksemplet skal vi vise hvordan elementets posisjon dynamisk kan tas som en bruker som er lagt inn verdi og oppdatere verdien til elementet på den aktuelle posisjonen.

Kode:

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

Utgangen er som følger. Her brukte vi scanf-funksjonen til å lese verdien som ble gitt av brukeren i henhold til deres valg for plasseringen av et element basert på array-nivå, rad og kolonnetall.

Kan du prøve å skrive et program ved å oppdatere hele kolonnen i matrisen med brukerinputte verdier?

Som vi vet, i 3D-arrayen, erklærer vi størrelsen på matrisen i begynnelsen. Vi er klar over størrelsen på matrisen, men hva hvis brukeren gir et tilfeldig rad- og kolonnenummer utenfor arraystørrelsen?

Hva om vi legger inn flere elementer enn det som kreves i matrisen?

Legg merke til at ettersom vi ikke hadde skrevet noen om / annen tilstand eller prøv / fangstblokker, endres ikke matrisen. Vi kan imidlertid skrive koden ved å bruke de ovennevnte forholdene for å vise feil i slike tilfeller.

Som det siste eksemplet, er du ikke nysgjerrig på, hva skjer hvis vi hopper over noen elementer i mellom? Hva gjør programmet mitt?

Som observert i ovennevnte utgang:

  1. Vi gikk glipp av 4 verdier i inngangen, bare ved å gi plass og trykket på enter
  2. Men vi hadde fått det omfanget til å legge inn de 4 gjenværende elementene.
  3. Så spesifiserte vi det siste nivået, den siste raden og det siste kolonnelementet som skulle endres til 78. Og utdataene er som forventet, er det ikke?

Slette elementer

Etter konseptene om innsetting og oppdatering av dataene i 3D-arrayen, la oss nå se hvordan vi kan slette en hel rad fra matrisen.

Vi har skrevet et program i et enkelt format slik at konseptet med forskjellige operasjoner lett kan forstås.

Kode:

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

ellers
(
for (k = 0; k <3; k ++)
(
printf (“\ t% d”, c (i) (j) (k));
)
)
printf ( “\ n”);
)
printf ( “\ n”);
)
)

Tok verdiene til en matrise dynamisk. Trinnene som følges er:

  1. Bedt brukeren om å legge inn nummeret (indeksen) på raden som må slettes.
  2. Bruker for loop iterasjon av maternivåer, rader og kolonner. Vi sammenligner om radnummeret og brukerinputnummeret stemmer overens eller ikke.
  3. Hvis de stemmer overens, og hvis radnummeret er mindre enn størrelsen på matrisen, skriver vi ut neste rad. Ellers trykker vi raden slik den er.
  4. Da vi ikke hadde noen betingelse på nivået på matrisen, blir radnummeret som er spesifisert slettet fra begge matrisenivåene.

Utgangen er som følger:

Hva om vi gir radnummeret utenfor matrisegrensen?

Den vil ikke finne raden for å slette og avslutte programmet ved å skrive ut hele matrisen.

Som allerede kjent kan vi til og med erklære verdiene for antall rader og kolonner dynamisk og skrive programmet deretter.

Ser ikke dette enkelt og lett å lære?

Kan du prøve å slette et bestemt element for 3d-matrisen nå?

Konklusjon

I dette avsnittet har vi lært de grunnleggende operasjonene på tredimensjonale matriser.

3D-matrisen inneholder mange sett med 2-D-matriser. Som vi har sett sjakkbrettet som et eksempel på en 2D-matrise, hvis vi hadde plassert mange sjakkbrett sammen, kan 3D-matrisen hjelpe oss med å først velge sjakkbrettet du vil spille med, og deretter gå etter radene og kolonnene på det sjakkbrettet.

Prøv å løse de grunnleggende operasjonene til 3d-matriser og ha det gøy å lære C.

Anbefalte artikler

Dette er en guide til 3D Arrays i C. Her diskuterer vi initialiseringen av en 3D-matrise som ligner på 2D-matrisen og elementene i Array. Du kan også se på følgende artikkel for å lære mer -

  1. Arrays i R
  2. Datatyper i MATLAB
  3. Hvordan lage en matriser i C #?
  4. Hvordan 3D Arrays er definert i Java?
  5. Arrays i PHP