Matrices multidimensionales C ++ (matrices 2nd y 3d)

En este tutorial, aprenderemos sobre matrices multidimensionales en C ++. Más específicamente, cómo declararlos, acceder a ellos y utilizarlos de manera eficiente en nuestro programa.

En C ++, podemos crear una matriz de una matriz, conocida como matriz multidimensional. Por ejemplo:

 int x(3)(4);

Aquí, x es una matriz bidimensional. Puede contener un máximo de 12 elementos.

Podemos pensar en esta matriz como una tabla con 3 filas y cada fila tiene 4 columnas como se muestra a continuación.

Elementos en matriz bidimensional en Programación C ++

Las matrices tridimensionales también funcionan de manera similar. Por ejemplo:

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

Esta matriz x puede contener un máximo de 24 elementos.

Podemos averiguar el número total de elementos en la matriz simplemente multiplicando sus dimensiones:

 2 x 4 x 3 = 24

Inicialización de matriz multidimensional

Como una matriz normal, podemos inicializar una matriz multidimensional en más de una forma.

1. Inicialización de matriz bidimensional

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

No se prefiere el método anterior. A continuación, se muestra una mejor manera de inicializar esta matriz con los mismos elementos de la matriz:

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

Esta matriz tiene 2 filas y 3 columnas, por lo que tenemos dos filas de elementos con 3 elementos cada una.

Inicializando una matriz bidimensional en C ++

2. Inicialización de matriz tridimensional

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

Ésta no es una buena forma de inicializar una matriz tridimensional. Una mejor forma de inicializar esta matriz es:

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

Observe las dimensiones de esta matriz tridimensional.

La primera dimensión tiene el valor 2. Entonces, los dos elementos que componen la primera dimensión son:

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

La segunda dimensión tiene el valor 3. Observe que cada uno de los elementos de la primera dimensión tiene tres elementos cada uno:

 (3, 4, 2, 3), (0, -3, 9, 11) y (23, 12, 23, 2) para el elemento 1. (13, 4, 56, 3), (5, 9, 3 , 5) y (5, 1, 4, 9) para el Elemento 2.

Finalmente, hay cuatro intnúmeros dentro de cada uno de los elementos de la segunda dimensión:

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

Ejemplo 1: matriz 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; )

Salida

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

En el ejemplo anterior, hemos inicializado una intmatriz bidimensional denominada prueba que tiene 3 "filas" y 2 "columnas".

Aquí, hemos utilizado el forciclo anidado para mostrar los elementos de la matriz.

  • el bucle exterior de i == 0para i == 2acceder a las filas de la matriz
  • el bucle interno de j == 0para j == 1acceder a las columnas de la matriz

Finalmente, imprimimos los elementos de la matriz en cada iteración.

Ejemplo 2: Toma de entrada para una matriz 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; )

Salida

 Ingrese 6 números: 1 2 3 4 5 6 Los números son: números (0) (0): 1 números (0) (1): 2 números (0) (2): 3 números (1) (0): 4 números (1) (1): 5 números (1) (2): 6

Aquí, hemos usado un forbucle anidado para tomar la entrada de la matriz 2d. Una vez que se ha tomado toda la entrada, hemos usado otro forciclo anidado para imprimir los miembros de la matriz.

Ejemplo 3: matriz 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; )

Salida

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

El concepto básico de los elementos de impresión de una matriz 3D es similar al de una matriz 2D.

Sin embargo, dado que estamos manipulando 3 dimensiones, usamos un bucle for anidado con 3 bucles totales en lugar de solo 2:

  • el bucle exterior de i == 0a i == 1accede a la primera dimensión de la matriz
  • el ciclo medio de j == 0a j == 2accede a la segunda dimensión de la matriz
  • el bucle más interno de k == 0a k == 1accede a la tercera dimensión de la matriz

Como podemos ver, la complejidad de la matriz aumenta exponencialmente con el aumento de dimensiones.

Articulos interesantes...