Introducere în Arrayuri 3D în C

Un Array este un grup de elemente cu același tip de date (omogen). Se mai numește și tip de date derivate. După cum s-a observat deja, un tablou 3D mărește spațiul exponențial și, o poziție suplimentară adăugată pentru a localiza elementul din tablă. În acest subiect, vom afla despre Array-uri 3D în C.

De exemplu, luați în considerare o clădire cu 4 niveluri, cu multe sloturi pentru parcarea bicicletelor. Așadar, aici pentru a obține direcțiile perfecte ale slotului pentru bicicleta care este parcată, trebuie să spunem numărul nivelului cu numărul de rând și coloană. Când spuneți doar tabloul, rândul 7 și coloana 4, la ce nivel îl caută? Acest tablou 3D este doar pentru stocarea mai multor cantități de date și reprezentarea pozițiilor.

Cum le putem defini și implementa? Mergând mai departe, haideți să înțelegem acele concepte.

Sintaxă:

În C, tablele dimensionale pot fi declarate după cum urmează:

Deci, în același mod, putem declara tabloul 3-D ca:

Sensul reprezentării de mai sus poate fi înțeles ca:

  1. Memoria alocată variabilei c este de tip int.
  2. Capacitatea totală pe care o poate deține acest tablou este de 2 * 3 * 4, care este egală cu 24 de elemente.
  3. Datele sunt reprezentate sub formă de 2 tablouri cu 3 rânduri și 4 coloane fiecare.
coloane
c (0) Array rânduric (0) (0)c (0) (1)c (0) (2)c (0) (3)
c (1) Prieteni (0)c (1) (1)c (1) (2)c (1) (3)
c (2) (0)c (2) (1)c (2) (2)c (2) (3)
coloane
c (1) Array rânduric (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)

Datele din interiorul tabloului pot fi accesate prin intermediul reprezentării de mai sus. În reprezentarea matricelor 3D, prima paranteză pătrată reprezintă nivelul tabloului care trebuie luat în considerare, al doilea ar fi numărul de rânduri, iar al treilea este pentru numărul de coloane.

Reprezentarea indexului tabloului pentru primul element începe întotdeauna cu zero și se termină cu dimensiunea-1. Așadar, de exemplu, dacă numărul de rânduri este 3, atunci reprezentarea indexului pentru accesarea datelor din rânduri va fi 0, 1 și 2. Aceeași logică se aplică și la nivelul tabloului și la indexurile coloanelor. Pentru reprezentarea de mai sus, pentru a obține datele de la primul nivel al tabloului cu a doua linie a 3 -a coloană, putem accesa prin c (0) (1) (2).

Inițializarea Arhierelor 3D în C

Putem inițializa un tablou 3D similar cu tabloul 2-D.

Așa cum am menționat mai sus, numărul total de elemente care pot fi încadrate în tablă ar fi matricea1 * arraysize2 * arraysize3. Aici este 2 * 4 * 3, care dă 24.

Inserarea elementelor:

Similar cu tabloul 2D, pentru a insera elemente într-un tablou 3-D, trebuie să introducem datele în niveluri, rânduri și coloane. Deci, pentru aceasta, folosim conceptul de bucle. În procesul de mai sus pentru inițializarea datelor din tablou, am fost predefinite valorile.

Aici, elementele pot fi introduse dinamic de către utilizator, conform cerințelor. Mai jos este prezentat un exemplu de cod pentru inserarea elementelor.

Cod:

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

După cum se observă în cod:

  1. În primul rând, declarăm variabila matrice și dimensiunile tabloului cu numărul de niveluri ale tabloului, rândurilor și coloanelor.
  2. Declarăm apoi trei variabile pentru iterarea elementelor din tablou.
  3. Apoi, pentru bucle sunt utilizate. Prima buclă este pentru iterarea nivelurilor, a doua este pentru rânduri și a treia buclă pentru coloane.
  4. Funcția Scanf este utilizată pentru a citi datele pe măsură ce introducem, apoi așezați valoarea introdusă la acele poziții ale i, j și k.

În exemplul de mai sus, am inserat datele într-o matrice cu 2 niveluri, 4 rânduri și 3 coloane. Rezultatele următoare pot fi obținute după cum urmează:

Deoarece nu am folosit funcția printf pentru a afișa ieșirea, programul scris a citit doar valorile introduse de utilizator. După scrierea funcției de tipărire (folosind bucle), ieșirea va fi afișată ca:

Elemente de actualizare:

Actualizarea elementelor din tablou se poate face fie prin specificarea unui anumit element care trebuie înlocuit, fie prin identificarea unei poziții în care trebuie făcută înlocuirea. Pentru actualizare, în general, avem nevoie de următoarele detalii.

  1. Elemente ale unui tablou
  2. Poziția / elementul, unde trebuie introdus
  3. Valoarea de inserat.

Pentru actualizarea datelor dintr-un tablou prin detalii ale elementului, mai întâi, trebuie să căutăm acel element din tablou, să înțelegem poziția acestuia și apoi să înlocuim elementul vechi cu elementul nou.

Aici, am dat mai jos două exemple de actualizare a elementului unui tablou 3D.

În primul rând, să parcurgem un exemplu în care poziția elementului de actualizat este deja cunoscută.

Cod

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

În programul de mai sus, elementul de la primul nivel, primul rând și prima coloană este selectat și valoarea datelor din poziția respectivă a fost actualizată.

Rezultatele de mai sus sunt următoarele:

În cel de-al doilea exemplu, vom arăta modul în care poziția elementului poate fi luată în mod dinamic ca valoare introdusă de utilizator și vom actualiza valoarea elementului la acea anumită poziție.

Cod:

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

Rezultatul este următorul. Aici, am folosit funcția scanf pentru a citi valoarea dată de utilizator, după alegerea lor, pentru poziția unui element bazat pe nivel de tablă, rânduri și numere de coloană.

Ca exercițiu, puteți încerca să scrieți un program în actualizarea întregii coloane a matricei cu valori introduse de utilizator?

Acum, după cum știm, în tabloul 3D, declarăm dimensiunea tabloului la început. Suntem conștienți de dimensiunea tabloului, dar ce se întâmplă dacă utilizatorul dă un rând aleatoriu și un număr de coloană în afara dimensiunii noastre?

Ce se întâmplă dacă introducem mai multe elemente decât este necesar în tablou?

Observați că, întrucât nu am scris nicio condiție if / else sau try / catch blocuri, ieșirea matricei nu se schimbă. Cu toate acestea, putem scrie codul folosind condițiile menționate mai sus pentru a afișa erori pentru astfel de cazuri.

Ca ultimul exemplu, nu sunteți curioși, ce se întâmplă dacă sărim peste unele elemente? Ce face programul meu?

După cum s-a observat în rezultatul de mai sus:

  1. Am pierdut până la 4 valori la intrare, doar dând spațiu și apăsat Enter
  2. Aveam însă această posibilitate de a introduce cele 4 elemente rămase.
  3. Apoi am specificat ultimul nivel, ultimul rând și ultimul element al coloanei care trebuie schimbat la 78. Și ieșirea este așa cum se aștepta nu?

Ștergerea elementelor

După conceptele de inserare și actualizare a datelor din tabloul 3D, să vedem acum cum putem șterge un rând întreg din tablă.

Am scris un program într-un format simplu, astfel încât conceptul de operații diferite să poată fi înțeles cu ușurință.

Cod:

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

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

Luați valorile unui tablou în mod dinamic. Pașii urmați sunt:

  1. Solicitată utilizatorului să introducă numărul (indexul) rândului care trebuie șters.
  2. Utilizarea pentru iterarea buclelor de niveluri, rânduri și coloane. Comparăm dacă numărul de rând și numărul de intrare al utilizatorului corespund sau nu.
  3. Dacă se potrivesc și dacă numărul rândului este mai mic decât dimensiunea tabloului, imprimăm rândul următor. În rest, imprimăm rândul așa cum este.
  4. Aici, întrucât nu aveam nicio condiție la nivelul tabloului, numărul de rând specificat este șters din ambele niveluri ale tabloului.

Rezultatul este următorul:

Ce se întâmplă dacă, dăm numărul rândului în afara graniței tabloului?

Nu va găsi rândul pentru a șterge și ieși din program prin imprimarea întregului tablou.

După cum se știe deja, putem chiar să declarăm valorile pentru numărul de rânduri și coloane în mod dinamic și să scriem programul în consecință.

Nu pare acest lucru simplu și ușor de învățat?

Ca exercițiu, puteți încerca să ștergeți un anumit element pentru tabloul 3d acum?

Concluzie

În această secțiune, am învățat operațiile de bază pe tablouri tridimensionale.

Matricea 3D conține multe seturi de matrițe 2-D. Așa cum am văzut tabla de șah ca un exemplu de tablou 2D, dacă am fi plasat multe table de șah împreună, tabloul 3D ne poate ajuta mai întâi să alegem tabla de șah cu care vrei să joci și apoi să mergi pe rândurile și coloanele din tablă de șah.

Încercați să rezolvați operațiunile de bază ale tablourilor 3d și distrați-vă învățarea C.

Articole recomandate

Acesta este un ghid pentru Arrayuri 3D în C. Aici discutăm inițializarea unui tablou 3D similar cu tabloul 2D și elementele Array. De asemenea, puteți consulta articolul următor pentru a afla mai multe -

  1. Arătări în R
  2. Tipuri de date în MATLAB
  3. Cum să creezi o imagine în C #?
  4. Cum sunt definite Array-urile 3D în Java?
  5. Arătări în PHP