Introducere în Array Multidimensional în C

Acest articol se concentrează asupra tabloului multidimensional în c, care este utilizat în principal în analiza computerului și a cercetării. În general, un tablou focalizează liniar o informație despre care se spune că este unidimensional. O singură dimensiune stochează date numai informații unice, cum ar fi regnul studenților. În unele situații, este necesar să stocați datele într-un format de tabel care cuprinde rânduri și coloane sau să gestionați date complexe. Pentru a o vizualiza avem nevoie de un format matricial pe care l-am numit sub formă de tablouri bidimensionale în care aranjamentele necesită pixeli ale imaginii, grafică. Datele sunt stocate în mod tabular. Manipulările Array sunt efectuate prin rearanjarea unui element prin utilizarea funcțiilor precum redimensionarea, stoarcerea.

Cum se declară un tablou multidimensional în C?

Sintaxă:

Declarația generală a tabloului multidimensionale este dată ca:

type name ( size) (size)……. N;

  • Aici, numele tipului de date - reprezintă tipul de elemente (întregi, float).
  • Numele Array - Denumește numele atribuit tabloului dimensional.
  • Rând-size - Număr de rânduri ex. rând-size = 8, apoi array are 8 rânduri.
  • Dimensiunea coloanei - număr de elemente de coloană.

Cum să inițializăm matricea multidimensională în C?

Mărimea tablourilor multidimensionale este prevăzută prin înmulțirea dimensiunii diverselor dimensiuni. Și stochează valori sub două moduri, cum ar fi rândul-major și coloana-majoră. Iar alocarea memoriei validează atât proprietățile de lungime, cât și cele de rang.

În C, matricea multidimensională are trei tipuri:

  1. Matricea bidimensională
  2. Array tridimensional
  3. Matricea în patru dimensiuni

1. Matricea bidimensională

Array bidimensional este structurat sub formă de matrici și implementat folosind rânduri și coloane, cunoscute și sub numele de tablă de matrice. Alocarea memoriei se face fie în rând-major și coloană-major. Iar formatul implicit este Row-Major. Când luați un tablou 2-D, fiecare element este considerat el însuși un tablou 1-D sau cunoscut a fi o colecție a unui tablou 1-D. Matricea de două d folosește două pentru bucle sau bucle cuiburi unde buclele exterioare se execută de la 0 la subscripția inițială.

Sintaxă:

type array name ( no. of rows) ( no. of Columns);

Exemplu:

int td (4)(3);

aici 4 este nr. de rânduri și 3 este nr. de coloane.

Inițializarea Arrayului bidimensional

Inițializarea în tabloul 2-D se face în mai multe moduri, este prezentat aici.

int m (3)(2) = ((10, 3) (4, 2) (6, 4) (5, 4) (3, 4));
int di (2)(4) = (10, 5, 8, 12, 45, 13, 11, 61);

Aici, am menționat nr. de rânduri și coloane din casetă Este obligatoriu să alocați al doilea index pentru a înțelege compilatorul despre sfârșitul și începutul rândului. Tabelul de mai jos prezintă alocarea de memorie a tabloului 2-D.

Numărul de elemente este determinat prin manipularea unui număr de rânduri și coloane și înmulțirea nr. a rândurilor și respectiv a coloanelor. pentru instanță, nr. a elementelor pe care o matrice deține B (-2 … 4, -3.6). Se calculează după limita inferioară și limita superioară.

No. of rows= UB-LB +1
=4-(-2) +1 = 4+2+1= 7
No. of columns = UB-LB +1
= 6-(-3) + 1= 11
No. of elements = Rows * columns = 7 * 11 =77 elements

Punerea în aplicare

Se realizează folosind implementări Row major și coloană majoră

Rând-Major:
Formula de manipulare a adreselor este dată ca:
= B +W ( n(I-1) +(J-1))
Unde b- este adresa de bază și n- numărul de coloane pentru octeți W.
Coloana principală:
= B +W ( r(j-1) +(i-1))
unde r - este nr. de rânduri.

Exemple de două dimensiuni

Exemple de două dimensiuni Array sunt:

Exemplul # 1

Fiecare element al unui tablou A (-10.10, 20 … 35) are nevoie de 1 octet de memorie. Și tabloul se potrivește cu Coloana majoră la adresa 400, Găsiți locația A (0, 30).

Soluţie

BA =400, W=1
R = no. of rows -> 10-(-10) +1 = 21
I= -10; J= 20
Address A (0, 30) = 400 + 1((0-(-10) +21(30-20))) =400 +(10+21*10)
=400 +(10+210) = 620

O operație familiară realizată în matricea 2-d este Algebra matricilor cu m * n Matricea lui B. Conceptul matematic al matricei este implementat la fel ca în programare.

Exemplul de mai jos stochează un element în formatul matricei și imprimă același lucru.

Cod:

#include
int main ()
(
int a(3)(4), i, j;
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("Enter arr(%d)(%d): ", i, j);
scanf("%d", &a(i)(j));
)
)
printf("\nEntered 2-D array is: \n\n");
for(i = 0; i < 3; i++)
(
for(j = 0; j < 4; j++)
(
printf("%3d ", a(i)(j) );
)
printf("\n");
)
return 0;
)

ieşire:

Exemplul # 2

Programul C efectuând suma a două matrici.

Cod:

#include
int main()
(
int mat(20)(20);
int i, j, r, c;
int s;
printf("Enter number of Rows :");
scanf("%d", &r);
printf("Enter number of Cols :");
scanf("%d", &c);
printf("\nEnter matrix elements :\n");
for(i=0;i< r;i++)
( for(j=0;j< c;j++)
(
printf("Enter the number of inputs (%d, %d) : ", i+1, j+1);
scanf("%d", &mat(i)(j));
)
)
printf("\n");
for(i=0;i< r;i++)
(
s=0;
for(j=0;j< c;j++)
(
printf("%d\t", mat(i)(j));
s+=mat(i)(j);
)
printf("\tSUM : %d", s);
printf("\n");
)
)

Programul de mai sus calculează suma a două matrici A (20, 20) B (20, 20), cu condiția să aibă două matrici identice. Pentru buclă, este nevoie de două matrice de intrare și de bucle pentru a accepta matricea.

ieşire:

Exemplul # 3

Transpunerea unei matrice

Intercambierea rândurilor și coloanelor pentru a forma o nouă matrice care este cunoscută ca transpunerea unei matrice.

Exemplu:

Apoi Transpunere dă,

Transpunerea matricei folosind programul C

Cod:

#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)
#include
int main()
(
int T(5)(5), i, j, a, b;
printf(" No.of rows?");
scanf("%d", &a);
printf("No.of columns?");
scanf("%d", &b);
printf("\nEnter the elements in matrix:\n");
for(i=0;i for(j=0;j scanf("%d", &T(i)(j));
printf("\nTranspose matrix is given as:\n");
for(i=0;i (
for(j=0;j printf("%d ", T(j)(i));
printf("\n");
)
return 0;
)

În programul de mai sus Pentru a citi o matrice am folosit două pentru bucle și pentru a tipări transpunerea ei cuibărită pentru buclă, este utilizat pentru a afișa ieșirea. Aici am folosit matrice 3 * 3.

ieşire:

2. Matricea tridimensională

Este numit un Array of Array Elements sau Un Array of Matrices. Este destul de zumzet, dar odată ce ai practică către logică, este mai ușor de implementat. iar această matrice 3-D necesită mai mult de trei dimensiuni și necesită stocarea volumului de memorie.

Poate fi declarat ca:

data_type array_name (table name) ( no. of row) ( no. of column) int L(m)(n) (p);

int L (3) (4) (2); Aici tabloul L poate conține 24 de elemente. Și toate acestea pot fi inițializate în timpul procesului de compilare, dar atunci când sunt inițializate sunt introduse într-o valoare a gunoiului.

Inițializarea se poate face în același mod ca un tablou bidimensional. Iată un eșantion,

int L (2)(3)(4) = (((2, 2, 1, 3), (1, 6, 5, 11), (22, 11, 13, 5)), ((13, 5, 77, 8), (6, 8, 2, 4), (3, 2, 7, 8)));

Exemple de matricea tridimensională

Iată câteva exemple din tabloul tridimensional care sunt prezentate mai jos:

Exemplul # 1

Mai jos este prezentat un exemplu simplu în programarea C care ilustrează matricea tridimensională. Se realizează folosind o buclă, luând în considerare 3 pentru bucle pentru elemente 3d.

Cod:

#include
void main()
(
printf("three dimensional array!\n\n");
int i, j, k, s(2)(1)(2), siz;
siz=2*1*2;
printf("Enter %d elements: \n", siz);
for(i = 0; i < 2; ++i)
(
for (j = 0; j < 1; ++j)
(
for(k = 0; k < 2; ++k )
(
scanf("%d", &s(i)(j)(k));
)
)
)
printf("The stored values are:\n\n");
for(i = 0; i < 2; i++)
(
for (j = 0; j < 1; j++)
(
for(k = 0; k < 2; k++)
(
printf("sample(%d)(%d)(%d) = %d\n", i, j, k, s(i)(j)(k));
)
)
)
)

ieşire:

Exemplul # 2

Un alt exemplu de matrice 3-D pentru a imprima automat elementele.

Cod:

#include
int main()
(
int m(2)(3)(2) =
(
( (1, 2), (3, 5), (6, 5) ),
( (8, 3), (8, 7), (9, 11) )
);
for (int i = 0; i <2; ++i)
(
for (int j = 0; j <3; ++j)
(
for (int k = 0; k <2; ++k)
printf("Value at m(%d)(%d)(%d) = %d\n", i, j, k, m(i)(j)(k));
)
)
)
return 0;
)

ieşire:

3. Matricea cu patru dimensiuni

Este un tablou format din trei dimensiuni și este foarte dificil în gestionarea dimensiunilor. Este privit ca o grămadă de cuburi împreună și aplicabil pentru vectorii spațiali.

Declarație de matrice 4-D:

Tastați numele tabloului (1) (2) (3) (4) ……. (n) unde 1, 2 indică dimensiunile și n implică a noua dimensiune.

Exemplu:

int state (5)(6)(7)(8);

Exemplu de matrice în patru dimensiuni

Programul C pentru a implementa matricea 4- D.

Cod:

#include
int main()
(
int i, j, k, l, s;
int d(2)(2)(2)(2);
s = 2;
d(0)(0)(0)(0) = 4;
d(0)(0)(0)(1) = 3;
d(0)(0)(1)(0) = 2;
d(0)(0)(1)(1) = 6;
d(0)(1)(0)(0) = 6;
d(0)(1)(0)(1) = 8;
d(0)(1)(1)(0) = 1;
d(0)(1)(1)(1) = 2;
d(1)(0)(0)(0) = 6;
d(1)(0)(0)(1) = 9;
d(1)(0)(1)(0) = 5;
d(1)(0)(1)(1) = 1;
d(1)(1)(0)(0) = 9;
d(1)(1)(0)(1) = 7;
d(1)(1)(1)(0) = 5;
d(1)(1)(1)(1) = 7;
for (i = 0; i < s; i++) (
for (j = 0; j < s; j++) (
for (k = 0; k < s; k++) (
for (l = 0; l < s; l++) (
printf("Value of stdio(%d)(%d)(%d)(%d): %d ", i, j, k, l, d(i)(j)(k)(l));
printf("\n");
)
)
)
)
return 0;
)

ieşire:

Concluzie

Până la urmă, în acest articol, am discutat matricile multidimensionale și subtipurile lor în programarea C. Și, de asemenea, declarația lor și accesarea elementelor într-un format matricial. Aceste tehnici sunt aplicate în concept precum implementarea binară de căutare și sortare. Aici un index joacă un rol esențial, deoarece acestea specifică un element din structura matricei.

Articole recomandate

Acesta este un ghid pentru Array Multidimensional în C. Aici vom discuta despre cum să inițiem tabloul multidimensional în C împreună cu exemple. De asemenea, puteți consulta următoarele articole pentru a afla mai multe-

  1. Cele mai bune compilatoare C
  2. Arhiere 2D în C #
  3. Arhive 2-D în C
  4. C clase de stocare
  5. C Înmulțirea matricei de programare
  6. 3 tipuri diferite de Array-uri în PHP (Exemple)
  7. Cum funcționează Array în Unix cu sintaxa?