Introduktion til 3D Arrays i C

En matrix er en gruppe af elementer med den samme (homogene) datatype. Det kaldes også en afledt datatype. Som allerede bemærket øger en 3D-matrix pladsen eksponentielt og tilføjes en ekstra position for at lokalisere elementet i arrayen. I dette emne skal vi lære om 3D Arrays i C.

Overvej for eksempel en bygning i 4 plan med mange slots til cykelparkering. Så her for at få den perfekte slotretning for den cykel, der er parkeret, er vi nødt til at fortælle niveaunummeret med række- og kolonnenummer. Når du bare fortæller matrixen, række 7 og kolonne 4, hvilket niveau søger det efter? Denne 3D-matrix er kun til at gemme flere mængder data og repræsentere positionerne.

Hvordan kan vi definere og implementere dem? Gå videre, lad os forstå disse begreber.

Syntaks:

I C kan dimensionelle arrays deklareres som følger:

Så på samme måde kan vi erklære 3D-arrayet som:

Betydningen af ​​ovenstående repræsentation kan forstås som:

  1. Hukommelsen, der er tildelt variabel c, er af datatype int.
  2. Den samlede kapacitet, som denne matrix har, er 2 * 3 * 4, hvilket er lig med 24 elementer.
  3. Dataene er repræsenteret i form af 2 arrays med 3 rækker og 4 kolonner hver.
Kolonner
c (0) Array rækkerc (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 rækkerc (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 inde i arrayet kan fås adgang til gennem ovenstående repræsentation. I 3D-arrays-repræsentation repræsenterer den første firkantede beslag niveauet for den matrix, der skal overvejes, det andet ville være antallet af rækker, og det tredje er for antallet af kolonner.

Indeksrepræsentationen af ​​matrixen for det første element starter altid med nul og slutter med størrelse-1. Så hvis antallet af rækker for eksempel er 3, så er indeksrepræsentationen for adgang til dataene i rækkerne 0, 1 og 2. Den samme logik gælder også for array-niveauet og kolonneindekserne. For ovennævnte repræsentation kan vi få adgang til c (0) (1) (2) for at få dataene fra 1. niveau af arrayet med 2. række 3. kolonne.

Initialisering af 3D Arrays i C

Vi kan initialisere en 3D-matrix, der ligner 2-D array.

Som nævnt ovenfor ville det samlede antal elementer, der kan passe ind i arrayet, være arraysize1 * arraysize2 * arraysize3. Her er det 2 * 4 * 3, hvilket giver 24.

Indsættelse af elementer:

Tilsvarende 2D-array, for at indsætte elementer i en 3D-array, er vi nødt til at indsætte dataene i niveauer, rækker og kolonner. Så for dette bruger vi begrebet løkker. I ovenstående proces til initialisering af dataene i matrixen havde vi foruddefineret værdierne.

Her kan elementer indsættes dynamisk af brugeren i henhold til kravene. Nedenfor er et eksempel på kode til indsættelse af elementerne.

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 observeret i koden:

  1. Først erklærer vi arrayvariablen og dimensionerne på arrayet med antallet af niveauer i array, rækker og kolonner.
  2. Vi erklærer derefter tre variabler til at itereere over elementerne i matrixen.
  3. Derefter bruges for løkker. Den første sløjfe er for niveauerne iteration, den anden er for rækkerne og den tredje sløjfe er for kolonnerne.
  4. Scanf-funktion bruges til at læse dataene, som vi indtaster, og derefter placere værdien indsat på disse positioner i, j og k.

I ovenstående eksempel indsatte vi dataene i en matrix med 2 niveauer, 4 rækker og 3 kolonner. Outputet fra følgende kan fås som nedenfor:

Da vi ikke har brugt printf-funktionen til at vise output, havde det skrevne program kun læst de indlæste værdier. Efter skrivning af udskrivningsfunktionen (ved hjælp af loops) vises output som:

Opdater elementer:

Opdateringen af ​​elementer i matrixen kan ske ved enten at specificere et bestemt element, der skal udskiftes, eller ved at identificere en position, hvor udskiftningen skal udføres. Til opdatering kræver vi generelt følgende oplysninger.

  1. Elementer af en matrix
  2. Position / element, hvor det skal indsættes
  3. Den værdi, der skal indsættes.

For at opdatere dataene i en matrix gennem elementdetaljer, skal vi først søge efter det element i arrayet, forstå dets placering og derefter erstatte det gamle element med det nye element.

Her har vi nedenfor givet to eksempler på opdatering af elementet i en 3D-matrix.

For det første, lad os gennemgå et eksempel, hvor placeringen af ​​det element, der skal opdateres, allerede er kendt.

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 ovenstående program vælges elementet på 1. niveau, 1. række og 1. kolonne, og værdien af ​​dataene i denne position er blevet opdateret.

Output for ovenfor er som følger:

I det andet eksempel skal vi vise, hvordan elementets position dynamisk kan tages som en bruger-indlæst værdi og opdatere værdien af ​​elementet på den bestemte position.

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

Outputet er som følger. Her brugte vi scanf-funktionen til at læse den værdi, som brugeren har givet efter deres valg for placeringen af ​​et element baseret på array-niveau, række og kolonnumre.

Kan du som en øvelse prøve at skrive et program ved at opdatere hele kolonnen i matrixen med brugerinput-værdier?

Som vi ved, angiver vi som 3D-array størrelsen på arrayet i selve begyndelsen. Vi er opmærksomme på størrelsen på matrixen, men hvad nu hvis brugeren giver et tilfældigt række- og kolonnenummer uden for vores array-størrelse?

Hvad hvis vi tilføjer flere elementer end krævet inde i matrixen?

Bemærk, at da vi ikke havde skrevet nogen hvis / andet betingelse eller prøve / fangst blokke, ændres matrixens output ikke. Vi kan dog skrive koden ved hjælp af de ovennævnte betingelser for at vise fejl i sådanne tilfælde.

Som det sidste eksempel, er du ikke nysgerrig efter, hvad sker der, hvis vi springer over nogle elementer i mellem? Hvad gør mit program?

Som observeret i ovenstående output:

  1. Vi gik glip af 4 værdier i input, bare ved at give plads og trykke på enter
  2. Men vi havde det omfang at indtaste de fire resterende elementer.
  3. Derefter specificerede vi det sidste niveau, sidste række og sidste kolonneelement, der skulle ændres til 78. Og output er som forventet, er det ikke?

Sletning af elementer

Efter begreberne indsættelse og opdatering af dataene i 3D-arrayen, lad os nu se, hvordan vi kan slette en hel række fra matrixen.

Vi har skrevet et program i et simpelt format, så begrebet forskellige operationer let 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 ++;
)

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

Tog værdierne for en matrix dynamisk. De følgende trin er:

  1. Bedt brugeren om at indtaste nummeret (indekset) på den række, der skal slettes.
  2. Brug til loop-iteration af arrayniveauer, rækker og kolonner. Vi sammenligner, hvis rækkenummeret og brugerinputnummeret matcher eller ej.
  3. Hvis de stemmer overens, og hvis rækkenummeret er mindre end størrelsen på arrayet, udskriver vi den næste række. Ellers udskriver vi rækken, som den er.
  4. Da vi ikke har nogen betingelse på array-niveauet, slettes det angivne rækkenummer fra begge array-niveauer.

Outputet er som følger:

Hvad hvis vi giver rækkenummeret uden for matrixgrænsen?

Det vil ikke finde rækken, der skal slettes og afslutte programmet ved at udskrive hele matrixen.

Som allerede kendt kan vi endda erklære værdierne for antallet af rækker og kolonner dynamisk og skrive programmet i overensstemmelse hermed.

Ser dette ikke enkelt ud og let at lære?

Kan du som en øvelse prøve at slette et bestemt element til 3d-array nu?

Konklusion

I dette afsnit har vi lært de grundlæggende operationer på 3-dimensionelle arrays.

3D-arrayet indeholder mange sæt 2-D-arrays. Som vi har set skakbrættet som et eksempel på en 2D-matrix, hvis vi havde placeret mange skakbræt sammen, kan 3D-matrixen hjælpe os med først at vælge det skakbræt, du vil lege med, og derefter gå efter rækkerne og kolonnerne i det skakbræt.

Prøv at løse de grundlæggende operationer i 3d-matriserne og have det sjovt at lære C.

Anbefalede artikler

Dette er en guide til 3D Arrays i C. Her diskuterer vi initialiseringen af ​​en 3D array svarende til 2D array og elementer i Array. Du kan også se på den følgende artikel for at lære mere -

  1. Arrays i R
  2. Datatyper i MATLAB
  3. Sådan opretter du en matriser i C #?
  4. Hvordan 3D Arrays er defineret i Java?
  5. Arrays i PHP

Kategori: