Introduktion till 3D Arrays i C

En array är en grupp av element med samma (homogena) datatyp. Det kallas också en Derived datatyp. Som redan noterats ökar en 3D-matris utrymmet exponentiellt och en extra position läggs till för att lokalisera elementet i arrayen. I det här ämnet kommer vi att lära oss om 3D-arrayer i C.

Tänk till exempel på en byggnad på 4 plan med många platser för cykelparkering. Så här för att få de perfekta spårriktningarna för cykeln som är parkerad måste vi berätta nivånumret med rad- och kolumnnummer. När du bara berättar arrayen, rad 7 och kolumn 4, vilken nivå söker den efter? Denna 3D-grupp är bara för att lagra fler mängder data och representera positionerna.

Hur kan vi definiera och implementera dem? Gå vidare, låt oss förstå dessa koncept.

Syntax:

I C kan dimensionella matriser deklareras enligt följande:

Så på samma sätt kan vi förklara 3D-arrayen som:

Betydelsen av ovanstående representation kan förstås som:

  1. Minne tilldelat variabel c är av datatyp int.
  2. Den totala kapaciteten som denna grupp kan innehålla är 2 * 3 * 4, vilket är lika med 24 element.
  3. Uppgifterna representeras i form av 2 matriser med 3 rader och 4 kolumner vardera.
kolumner
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)
kolumner
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)

Data inuti matrisen kan nås genom ovanstående representation. I 3D-matrisrepresentation representerar den första fyrkantskivan nivån på matrisen som måste beaktas, det andra är antalet rader och den tredje är för antalet kolumner.

Indexrepresentationen av arrayen för det första elementet börjar alltid med noll och slutar med storlek-1. Så, till exempel, om antalet rader är 3, kommer indexrepresentationen för åtkomst till data i rader att vara 0, 1 och 2. Samma logik gäller för matrisnivån och kolumnindex också. För ovanstående representation, för att få informationen om 1: a nivå i matrisen med 2: a rad 3: e kolumnen, kan vi komma åt med c (0) (1) (2).

Initiera 3D-matriser i C

Vi kan initialisera en 3D-grupp som liknar 2-D-arrayen.

Som nämnts ovan skulle det totala antalet element som kan passa in i matrisen vara arraysize1 * arraysize2 * arraysize3. Här är det 2 * 4 * 3, vilket ger 24.

Infoga element:

På samma sätt som 2D-arrayen, för att infoga element i en 3D-matris, måste vi infoga data i nivåer, rader och kolumner. Så för detta använder vi begreppet slingor. I ovanstående process för initiering av data i arrayen hade vi fördefinierat värdena.

Här kan element infogas dynamiskt av användaren enligt kraven. Nedan följer ett exempelkod för att sätta in elementen.

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

Som observerats i koden:

  1. Först förklarar vi matrisvariabeln och dimensionerna på matrisen med antalet nivåer i arrayen, raderna och kolumnerna.
  2. Vi förklarar sedan tre variabler för att iterera över elementen i matrisen.
  3. Sedan används för öglor. Den första slingan är för nivåer iteration, den andra är för raderna och den tredje slingan är för kolumnerna.
  4. Scanf-funktionen används för att läsa data när vi matar in och placera sedan värdet som är infogat på dessa positioner i, j och k.

I exemplet ovan satte vi in ​​data i en matris med 2 nivåer, 4 rader och 3 kolumner. Utgången från följande kan erhållas enligt nedan:

Eftersom vi inte har använt printf-funktionen för att visa utgången, hade det skrivna programmet bara läst användarens inmatade värden. Efter att du har skrivit utskriftsfunktionen (använder för slingor), visas utdata som:

Uppdatera element:

Uppdateringen av element i arrayen kan göras genom att antingen specificera ett specifikt element som ska ersättas eller genom att identifiera en position där ersättningen måste göras. För uppdatering kräver vi i allmänhet följande detaljer.

  1. Delar av en matris
  2. Position / element, där det måste sättas in
  3. Värdet som ska infogas.

För att uppdatera data i en matris genom elementdetaljer måste vi först söka efter det elementet i arrayen, förstå dess position och sedan ersätta det gamla elementet med det nya elementet.

Här har vi gett nedan två exempel på uppdatering av elementet i en 3D-array.

För det första, låt oss gå igenom ett exempel där positionen för elementet som ska uppdateras redan är känt.

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

I programmet ovan väljs elementet på 1: a nivån, 1: e raden och 1: a kolumnen och värdet på data i den positionen har uppdaterats.

Output för ovan är enligt följande:

I det andra exemplet kommer vi att visa hur elementets position dynamiskt kan tas som ett användarinmatat värde och uppdatera värdet på elementet vid den specifika positionen.

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

Utgången är som följer. Här använde vi scanf-funktionen för att läsa värdet som användaren har angett enligt deras val för positionen för ett element baserat på matrisnivå, rad och kolumnnummer.

Kan du prova att skriva ett program genom att uppdatera hela kolumnen i matrisen med användarinmatade värden?

Som vi känner i 3D-arrayen förklarar vi nu storleken på matrisen i själva början. Vi är medvetna om storleken på matrisen, men vad händer om användaren ger ett slumpmässigt rad- och kolumnnummer utanför vårt arraystorlek?

Tänk om vi matar in fler element än vad som krävs i matrisen?

Lägg märke till att eftersom vi inte hade skrivit några om / annars villkor eller försök / fångstblock förändras matrisen inte. Vi kan dock skriva koden med ovanstående villkor för att visa fel för sådana fall.

Som det sista exemplet, är du inte nyfiken på, vad händer om vi hoppar över några element däremellan? Vad gör mitt program?

Som observerats i ovanstående utgång:

  1. Vi missade upp 4 värden i ingången, bara genom att ge utrymme och trycka på enter
  2. Men vi hade det utrymmet att ange de fyra återstående elementen.
  3. Sedan specificerade vi den sista nivån, sista raden och det sista kolumnelementet som ska ändras till 78. Och utgången är som förväntat, är det inte?

Ta bort element

Efter begreppen infogning och uppdatering av data i 3D-arrayen, låt oss nu se hur vi kan ta bort en hel rad från arrayen.

Vi har skrivit ett program i ett enkelt format så att begreppet olika operationer lätt kan förstås.

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

annan
(
för (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ( ”\ n”);
)
printf ( ”\ n”);
)
)

Tog värdena på en matris dynamiskt. Stegen som följts är:

  1. Begärde användaren att mata in numret (indexet) på raden som måste tas bort.
  2. Används för loop-iteration av matrisnivåer, rader och kolumner. Vi jämför om radnumret och användarinmatningsnumret matchar eller inte.
  3. Om de stämmer överens och om radnumret är mindre än storleken på matrisen skriver vi ut nästa rad. Annars skriver vi ut raden som den är.
  4. Eftersom vi inte hade något villkor på arrayens nivå raderas det angivna radnumret från båda arraynivåerna.

Utgången är som följer:

Tänk om vi ger radnumret utanför matrisgränsen?

Den hittar inte raden för att radera och avsluta programmet genom att skriva ut hela matrisen.

Som redan känt kan vi till och med deklarera värdena för antalet rader och kolumner dynamiskt och skriva programmet i enlighet därmed.

Ser det inte enkelt ut och enkelt att lära sig?

Kan du som en övning försöka ta bort ett visst element för 3d-arrayen nu?

Slutsats

I det här avsnittet har vi lärt oss de grundläggande operationerna för tredimensionella matriser.

3D-arrayen innehåller många uppsättningar av 2-D-arrayer. Som vi har sett schackbrädet som ett exempel på en 2D-array, om vi hade placerat många schackbrädor tillsammans, kan 3D-arrayen hjälpa oss att först välja schackbrädan du vill spela med och sedan gå efter raderna och kolumnerna i det schackbrädet.

Försök lösa de grundläggande operationerna i 3d-matriserna och ha kul att lära C.

Rekommenderade artiklar

Detta är en guide till 3D-arrayer i C. Här diskuterar vi initialiseringen av en 3D-array som liknar 2D-arrayen och elementen i Array. Du kan också titta på följande artikel för att lära dig mer -

  1. Matriser i R
  2. Datatyper i MATLAB
  3. Hur man skapar en matriser i C #?
  4. Hur definierade 3D-arrayer i Java?
  5. Arrays i PHP

Kategori: