Matrice multidimensionale C ++ (matrice 2 și 3d)

În acest tutorial, vom afla despre matricele multi-dimensionale în C ++. Mai precis, cum să le declarăm, să le accesăm și să le folosim eficient în programul nostru.

În C ++, putem crea o matrice dintr-o matrice, cunoscută sub numele de matrice multidimensională. De exemplu:

 int x(3)(4);

Aici, x este un tablou bidimensional. Poate conține maximum 12 elemente.

Ne putem gândi la această matrice ca la un tabel cu 3 rânduri și fiecare rând are 4 coloane așa cum se arată mai jos.

Elemente în matricea bidimensională în programarea C ++

Tablourile tridimensionale funcționează, de asemenea, într-un mod similar. De exemplu:

 float x(2)(4)(3);

Această matrice x poate conține maximum 24 de elemente.

Putem afla numărul total de elemente din matrice pur și simplu înmulțind dimensiunile sale:

 2 x 4 x 3 = 24

Inițializarea matricei multidimensionale

La fel ca un tablou normal, putem inițializa un tablou multidimensional în mai multe moduri.

1. Inițializarea matricei bidimensionale

 int test(2)(3) = (2, 4, 5, 9, 0, 19);

Metoda de mai sus nu este preferată. Un mod mai bun de a inițializa această matrice cu aceleași elemente de matrice este dat mai jos:

 int test(2)(3) = ( (2, 4, 5), (9, 0, 19));

Această matrice are 2 rânduri și 3 coloane, motiv pentru care avem două rânduri de elemente cu câte 3 elemente.

Inițializarea unui tablou bidimensional în C ++

2. Inițializarea matricei tridimensionale

 int test(2)(3)(4) = (3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9);

Acesta nu este un mod bun de inițializare a unui tablou tridimensional. O modalitate mai bună de a inițializa această matrice este:

 int test(2)(3)(4) = ( ( (3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2) ), ( (13, 4, 56, 3), (5, 9, 3, 5), (5, 1, 4, 9) ) );

Observați dimensiunile acestui tablou tridimensional.

Prima dimensiune are valoarea 2. Deci, cele două elemente care cuprind prima dimensiune sunt:

 Element 1 = ((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)) Element 2 = ((13, 4, 56, 3), ( 5, 9, 3, 5), (5, 1, 4, 9)) 

A doua dimensiune are valoarea 3. Observați că fiecare dintre elementele primei dimensiuni are trei elemente fiecare:

 (3, 4, 2, 3), (0, -3, 9, 11) și (23, 12, 23, 2) pentru elementul 1. (13, 4, 56, 3), (5, 9, 3 , 5) și (5, 1, 4, 9) pentru elementul 2.

În cele din urmă, există patru intnumere în interiorul fiecăruia dintre elementele celei de-a doua dimensiuni:

 (3, 4, 2, 3) (0, -3, 9, 11) …… 

Exemplul 1: matrice bidimensională

 // C++ Program to display all elements // of an initialised two dimensional array #include using namespace std; int main() ( int test(3)(2) = ((2, -5), (4, 0), (9, 1)); // use of nested for loop // access rows of the array for (int i = 0; i < 3; ++i) ( // access columns of the array for (int j = 0; j < 2; ++j) ( cout << "test(" << i << ")(" << j << ") = " << test(i)(j) << endl; ) ) return 0; )

Ieșire

 test (0) (0) = 2 test (0) (1) = -5 test (1) (0) = 4 test (1) (1) = 0 test (2) (0) = 9 test (2) (1) = 1

În exemplul de mai sus, am inițializat o intmatrice bidimensională numită test care are 3 „rânduri” și 2 „coloane”.

Aici, am folosit forbucla imbricată pentru a afișa elementele matricei.

  • bucla exterioară de la i == 0pentru a i == 2accesa rândurile matricei
  • bucla interioară din j == 0pentru a j == 1accesa coloanele matricei

În cele din urmă, imprimăm elementele matricei în fiecare iterație.

Exemplul 2: Preluarea intrării pentru matrice bidimensională

 #include using namespace std; int main() ( int numbers(2)(3); cout << "Enter 6 numbers: " << endl; // Storing user input in the array for (int i = 0; i < 2; ++i) ( for (int j = 0; j > numbers(i)(j); ) ) cout << "The numbers are: " << endl; // Printing array elements for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( cout << "numbers(" << i << ")(" << j << "): " << numbers(i)(j) << endl; ) ) return 0; )

Ieșire

 Introduceți 6 numere: 1 2 3 4 5 6 Numerele sunt: ​​numere (0) (0): 1 numere (0) (1): 2 numere (0) (2): 3 numere (1) (0): 4 numere (1) (1): 5 numere (1) (2): 6

Aici, am folosit o forbuclă imbricată pentru a prelua intrarea matricei 2d. Odată ce a fost luată toată intrarea, am folosit o altă forbuclă imbricată pentru a imprima membrii matricei.

Exemplul 3: Matrice tridimensională

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include using namespace std; int main() ( // This array can store upto 12 elements (2x3x2) int test(2)(3)(2) = ( ( (1, 2), (3, 4), (5, 6) ), ( (7, 8), (9, 10), (11, 12) ) ); // Displaying the values with proper index. for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( cout << "test(" << i << ")(" << j << ")(" << k << ") = " << test(i)(j)(k) << endl; ) ) ) return 0; )

Ieșire

 test (0) (0) (0) = 1 test (0) (0) (1) = 2 test (0) (1) (0) = 3 test (0) (1) (1) = 4 test ( 0) (2) (0) = 5 test (0) (2) (1) = 6 test (1) (0) (0) = 7 test (1) (0) (1) = 8 test (1) (1) (0) = 9 test (1) (1) (1) = 10 test (1) (2) (0) = 11 test (1) (2) (1) = 12

Conceptul de bază al elementelor de imprimare ale unui tablou 3d este similar cu cel al unui tablou 2d.

Cu toate acestea, deoarece manipulăm 3 dimensiuni, folosim o buclă imbricată cu 3 bucle totale în loc de doar 2:

  • bucla exterioară de i == 0la i == 1accesează prima dimensiune a matricei
  • bucla din mijloc de j == 0la j == 2accesează a doua dimensiune a matricei
  • bucla cea mai interioară de k == 0la k == 1accesează a treia dimensiune a matricei

După cum putem vedea, complexitatea matricei crește exponențial odată cu creșterea dimensiunilor.

Articole interesante...