Introducere în Arhierele 2-D î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. Dacă luăm în considerare un tip de date primitiv și atribuim o valoare așa cum se arată mai jos,

Și acum, dacă dorim să stocăm o nouă valoare în variabila a, noua valoare înlocuiește valoarea veche. Folosind o variabilă primitivă, putem stoca o singură valoare simultan, nu putem stoca mai multe valori.

Pentru stocarea a mai mult de un element într-o singură variabilă, cum ar fi mărcile studenților, ID-urile angajaților, numerele mobile cu o cantitate mare de date, trebuie să creăm 100 de variabile unice, ceea ce este o sarcină foarte complexă. De aceea, a fost introdus conceptul de Arrays.

Concepte în Arhiere 2-D în C

Putem defini matricile în

  • Single-dimensional
  • Dublu-dimensional

Și așa mai departe până la N-Dimensional pe baza cerinței. Dar aici vom avea de-a face cu Arrayurile 2-D. După cum sugerează și numele, Array-urile 2-D pot fi o reprezentare matricială a datelor, care sunt create pentru a implementa o structură relațională a bazei de date relaționale și pot fi stocate în forme tabulare. Oferă ușurință de a reține datele în vrac care pot fi transmise oricărui număr de funcții, în funcție de cerință. Datele din aceste tablouri pot fi accesate prin ID-urile rândului și coloanei.

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

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

Sintaxă

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

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

  1. Memoria alocată variabilei b este de tip int.
  2. Datele sunt reprezentate sub formă de 2 rânduri și 3 coloane.


Datele din interiorul tabloului pot fi accesate prin intermediul reprezentării de mai sus. În reprezentarea matricelor 2-D, prima paranteză pătrată reprezintă numărul de rânduri, iar a doua este pentru numărul de coloane. Reprezentarea indexului tabloului pentru primul element începe întotdeauna cu zero și se termină cu dimensiunea-1. Variabila Array (aici b) deține întotdeauna adresa de bază a blocului de memorie și este numită variabilă pointer intern.

Deci, 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 indexurile de coloane. Pentru reprezentarea de mai sus, pentru a obține datele celei de-a doua rânduri a 3 -a coloană, putem accesa prin b (1) (2).

Inițializarea Array-urilor

Avem două metode diferite de inițializare a valorilor din C. Metodele diferă doar sintactic.

Mai jos este unul dintre ele.

Un alt mod de inițializare este următorul:

În general, prima metodă de inițializare este preferată, întrucât putem înțelege și vizualiza clar rândurile și coloanele Arăturilor 2-D din C.

Mai jos este prezentat exemplul pentru reprezentarea picturală a elementelor și adresa lor pentru tabloul b.

Elementele unui tablou sunt de obicei stocate în locații consecutive de memorie bazate pe tipul de date al elementelor.

Inserarea de elemente în Arăturile 2-D

Pentru inserarea elementelor în Arăturile 2-D, trebuie să introducem datele atât în ​​rânduri cât și în coloane. Deci, pentru aceasta, folosim conceptul de bucle. În procesul de mai sus pentru inițializarea datelor într-un 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.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
)

După cum se observă în cod:

  1. În primul rând, declarăm variabila tabloului și dimensiunile tabloului cu numărul de rânduri și coloane.
  2. Declarăm apoi două variabile pentru iterarea elementelor din tablou.
  3. Apoi, pentru bucle sunt utilizate. Exteriorul pentru buclă este pentru iterarea rândurilor, iar bucla interioară este pentru coloane.
  4. Funcția Scanf este folosită pentru a citi datele pe măsură ce introducem, apoi așezați valoarea introdusă la acele poziții ale lui i și j.

În exemplul de mai sus, am inserat datele într-o matrice având 2 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:

Actualizează Elemente în Schițe 2-D

Actualizarea elementelor dintr-un 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 elementul respectiv în tablou, să înțelegem poziția acesteia și apoi să înlocuim elementul vechi cu elementul nou.

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

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

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
b(0)(2)=10;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

În programul de mai sus, elementul de pe primul rând și coloana 3 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.

#include
int main()
(
int b(2)(3);
int i, j, num;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row and coulmn number :");
scanf("%d %d", &i, &j);
printf("Enter the number you want to update with: ");
scanf("%d", &num);
b(i)(j)=num;
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
printf("\n");
)
return 0;
)

Aici, am folosit funcția scanf pentru a citi valoarea dată de utilizator, după alegerea sa pentru poziția unui element bazat pe numerele de rând și coloană.

Rezultatul este următorul:

Ca exercițiu, puteți încerca să scrieți un program în actualizarea întregului rând al matricei cu valori introduse de utilizator?

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

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.

Ștergerea elementelor din Arăturile 2-D

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

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

#include
int main()
(
int b(2)(3), i, j, num, x;
printf("Enter elements into 2-D array: ");
for(i=0;i<2;i++)
(
for(j=0;j<3;j++)
(
scanf("%d", &b(i)(j));
)
)
printf("Enter the value of row number :");
scanf("%d", &x);
for(i=0;i<2;i++)
(
if(i==x)
(
for(j=0;j<3;j++)
(
if((i+1)<2)
(
printf("\t%d", b(i+1)(j));
)
)
i++;)
else
(
for(j=0;j<3;j++)
(
printf("\t%d", b(i)(j));
)
)
printf("\n");
)
)

Etapele urmate sunt:

  1. A luat valorile unui tablou în mod dinamic
  2. I-a cerut utilizatorului să introducă numărul (indexul) rândului care trebuie șters.
  3. Folosind iterarea buclelor, comparăm dacă numărul de rând și numărul de intrare al utilizatorului se potrivesc sau nu.
  4. Dacă se potrivesc și dacă numărul rândului este mai mic decât dimensiunea unui tablou, imprimăm rândul următor. În rest, imprimăm rândul așa cum este.

Rezultatul este următorul:

Ce se întâmplă dacă, dau 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 numerelor de rând ș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 2-d acum?

Concluzie

În această secțiune, am învățat operațiile de bază pe tablouri bidimensionale. Aceste tablouri 2-d sunt utile în timp real cu operațiunile matricei și multe calcule matematice.

Array-urile pot fi chiar utilizate în afișarea calendarelor, a amplasărilor parcării și chiar putem avea un joc de șah.

Multe alte structuri de date, cum ar fi listele legate, coada, graficele, copacii trebuie să utilizeze acest concept de matrice 2-D ca cerință de bază în stocarea și accesarea locațiilor diferitelor elemente. Încercați să rezolvați operațiunile de bază ale tablourilor 2d și distrați-vă învățarea C.

Articole recomandate

Acesta este un ghid pentru Schițele 2-D în C. Aici vom discuta Introducerea, inițializarea Array-urilor, Inserarea, Actualizarea, Ștergerea elementelor într-o Schiță 2-D. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Arătări în R
  2. Avantajele Array
  3. Arătări în C ++
  4. Schițe în JavaScript
  5. Exemple de Array-uri în C #
  6. Arătări în PHP