Introducción a las matrices 3D en C

Una matriz es un grupo de elementos con el mismo tipo de datos (homogéneo). También se llama un tipo de datos Derivado. Como ya se notó, una matriz 3D aumenta el espacio exponencialmente y se agrega una posición adicional para ubicar el elemento en la matriz. En este tema, aprenderemos sobre las matrices 3D en C.

Por ejemplo, considere un edificio de 4 niveles con muchas ranuras para estacionar bicicletas. Entonces, aquí para obtener las direcciones de ranura perfectas de la bicicleta que está estacionada, necesitamos decir el número de nivel con el número de fila y columna. Cuando le dice a la matriz, fila 7 y columna 4, ¿qué nivel busca? Esta matriz 3D es solo para almacenar más cantidades de datos y representar las posiciones.

¿Cómo podemos definirlos e implementarlos? Yendo más allá, comprendamos esos conceptos.

Sintaxis:

En C, las matrices dimensionales se pueden declarar de la siguiente manera:

Entonces, de la misma manera, podemos declarar la matriz 3-D como:

El significado de la representación anterior se puede entender como:

  1. La memoria asignada a la variable c es del tipo de datos int.
  2. La capacidad total que puede contener esta matriz es 2 * 3 * 4, que es igual a 24 elementos.
  3. Los datos se representan en forma de 2 matrices con 3 filas y 4 columnas cada una.
Columnas
c (0) Matriz Filasc (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)
Columnas
c (1) matriz Filasc (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)

Se puede acceder a los datos dentro de la matriz a través de la representación anterior. En la representación de matrices 3D, el primer corchete representa el nivel de la matriz que debe considerarse, el segundo sería el número de filas y el tercero es el número de columnas.

La representación de índice de la matriz para el primer elemento siempre comienza con cero y termina con tamaño-1. Entonces, por ejemplo, si el número de filas es 3, entonces la representación del índice para acceder a los datos en las filas será 0, 1 y 2. La misma lógica se aplica también para el nivel de matriz y los índices de columna. Para la representación anterior, para obtener los datos del primer nivel de la matriz con la segunda fila y la tercera columna, podemos acceder por c (0) (1) (2).

Inicializando matrices 3D en C

Podemos inicializar una matriz 3D similar a la matriz 2-D.

Como se mencionó anteriormente, el número total de elementos que pueden encajar en la matriz sería arraysize1 * arraysize2 * arraysize3. Aquí es 2 * 4 * 3, lo que da 24.

Insertar elementos:

Similar a la matriz 2D, para insertar elementos en una matriz 3D, necesitamos insertar los datos en niveles, filas y columnas. Entonces, para esto, utilizamos el concepto de bucles. En el proceso anterior para inicializar los datos en la matriz, habíamos predefinido los valores.

Aquí, los elementos pueden ser insertados dinámicamente por el usuario, según los requisitos. A continuación se muestra un código de ejemplo para insertar los elementos.

Código:

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

Como se observa en el código:

  1. Primero, estamos declarando la variable de matriz y las dimensiones de la matriz con el número de niveles de la matriz, filas y columnas.
  2. Luego declaramos tres variables para iterar sobre los elementos de la matriz.
  3. Luego, para bucles se utilizan. El primer ciclo es para la iteración de niveles, el segundo es para las filas y el tercer ciclo es para las columnas.
  4. La función Scanf se usa para leer los datos a medida que ingresamos, y luego coloca el valor insertado en esas posiciones de i, j y k.

En el ejemplo anterior, insertamos los datos en una matriz que tiene 2 niveles, 4 filas y 3 columnas. El resultado de lo siguiente se puede obtener de la siguiente manera:

Como no hemos utilizado la función printf para mostrar la salida, el programa escrito solo había leído los valores ingresados ​​por el usuario. Después de escribir la función de impresión (utilizando bucles for), la salida se mostrará como:

Elementos de actualización:

La actualización de los elementos en la matriz se puede hacer ya sea especificando un elemento en particular para ser reemplazado o identificando una posición donde se debe hacer el reemplazo. Para la actualización, generalmente requerimos los siguientes detalles.

  1. Elementos de una matriz.
  2. Posición / elemento, donde debe insertarse
  3. El valor a insertar.

Para actualizar los datos en una matriz a través de los detalles del elemento, primero debemos buscar ese elemento en la matriz, comprender su posición y luego reemplazar el elemento antiguo con el nuevo elemento.

Aquí, hemos dado a continuación dos ejemplos de actualización del elemento de una matriz 3D.

En primer lugar, veamos un ejemplo en el que ya se conoce la posición del elemento a actualizar.

Código

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

En el programa anterior, se selecciona el elemento en el 1 ° nivel, 1 ° fila y 1 ° columna y se actualiza el valor de los datos en esa posición.

La salida de arriba es la siguiente:

En el segundo ejemplo, vamos a mostrar cómo la posición del elemento puede tomarse dinámicamente como un valor ingresado por el usuario y actualizar el valor del elemento en esa posición en particular.

Código:

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

La salida es la siguiente. Aquí, utilizamos la función scanf para leer el valor dado por el usuario según su elección para la posición de un elemento basado en los niveles de nivel, fila y columna.

Como ejercicio, ¿puede intentar escribir un programa para actualizar la columna completa de la matriz con valores ingresados ​​por el usuario?

Ahora, como sabemos, en la matriz 3D, declaramos el tamaño de la matriz al principio. Somos conscientes del tamaño de la matriz, pero ¿qué pasa si el usuario da un número aleatorio de fila y columna fuera de nuestro tamaño de matriz?

¿Qué pasa si ingresamos más elementos de los requeridos dentro de la matriz?

Tenga en cuenta que, como no habíamos escrito ninguna condición if / else o try / catch, la salida de la matriz no cambia. Sin embargo, podemos escribir el código utilizando las condiciones mencionadas anteriormente para mostrar errores en tales casos.

Como último ejemplo, ¿no tiene curiosidad acerca de qué sucede si omitimos algunos elementos intermedios? ¿Qué hace mi programa?

Como se observa en el resultado anterior:

  1. Perdimos 4 valores en la entrada, simplemente dando espacio y presionamos enter
  2. Pero teníamos ese alcance para ingresar los 4 elementos restantes.
  3. Luego especificamos el último nivel, la última fila y el último elemento de columna para cambiar a 78. Y el resultado es el esperado, ¿no?

Eliminar elementos

Después de los conceptos de inserción y actualización de los datos dentro de la matriz 3D, veamos ahora cómo podemos eliminar una fila completa de la matriz.

Hemos escrito un programa en un formato simple para que el concepto de diferentes operaciones se pueda entender fácilmente.

Código:

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

más
(
para (k = 0; k <3; k ++)
(
printf ("\ t% d", c (i) (j) (k));
)
)
printf ("\ n");
)
printf ("\ n");
)
)

Tomó los valores de una matriz dinámicamente. Los pasos a seguir son:

  1. Se le pidió al usuario que ingrese el número (índice) de la fila que debe eliminarse.
  2. Uso para iteración de bucle de niveles de matriz, filas y columnas. Estamos comparando si el número de fila y el número de entrada del usuario coinciden o no.
  3. Si coinciden y si el número de fila es menor que el tamaño de la matriz, estamos imprimiendo la siguiente fila. De lo contrario, estamos imprimiendo la fila tal como está.
  4. Aquí, como no teníamos ninguna condición en el nivel de la matriz, el número de fila especificado se elimina de ambos niveles de la matriz.

La salida es la siguiente:

¿Qué pasa si damos el número de fila fuera del límite de la matriz?

No encontrará la fila para eliminar y salir del programa imprimiendo toda la matriz.

Como ya se sabe, incluso podemos declarar los valores para el número de filas y columnas dinámicamente y escribir el programa en consecuencia.

¿No parece esto simple y fácil de aprender?

Como ejercicio, ¿puede intentar eliminar un elemento particular para la matriz 3d ahora?

Conclusión

En esta sección, hemos aprendido las operaciones básicas en matrices tridimensionales.

La matriz 3D contiene muchos conjuntos de matrices 2-D. Como hemos visto el tablero de ajedrez como un ejemplo de una matriz 2D, si hubiéramos colocado muchos tableros de ajedrez juntos, la matriz 3D puede ayudarnos a elegir primero el tablero de ajedrez con el que quieres jugar y luego buscar las filas y columnas de ese tablero de ajedrez.

Intenta resolver las operaciones básicas de las matrices 3D y diviértete aprendiendo C.

Artículos recomendados

Esta es una guía de matrices 3D en C. Aquí discutimos la inicialización de una matriz 3D similar a la matriz 2D y los elementos de la matriz. También puede consultar el siguiente artículo para obtener más información:

  1. Arreglos en R
  2. Tipos de datos en MATLAB
  3. ¿Cómo crear una matriz en C #?
  4. ¿Cómo se definen las matrices 3D en Java?
  5. Matrices en PHP