Introducción a la matriz multidimensional en C

Este artículo se centra en la matriz multidimensional en c que se usa principalmente en análisis informáticos y de investigación. Generalmente, una matriz enfoca linealmente una información que se dice que es unidimensional. Unidimensional almacena datos solo información única como el registro de los estudiantes. En algunas situaciones, es necesario almacenar datos en un formato de tabla que comprenda filas y columnas o manejar datos complejos. Para visualizarlo, necesitamos un formato matricial que llamamos matrices bidimensionales en las que los arreglos requieren píxeles de la imagen, gráficos. Los datos se almacenan en forma de tabla. Las manipulaciones de matriz se realizan reorganizando un elemento mediante el uso de funciones como remodelar, apretar.

¿Cómo declarar una matriz multidimensional en C?

Sintaxis:

La declaración general de matriz multidimensional se da como:

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

  • Aquí, nombre del tipo de datos: denota el tipo de elementos (entero, flotante).
  • Nombre de matriz: denota el nombre asignado a la matriz dimensional.
  • Tamaño de fila: número de elementos de fila, ej. tamaño de fila = 8, entonces la matriz tiene 8 filas.
  • Tamaño de columna: número de elementos de columna.

¿Cómo inicializar la matriz multidimensional en C?

El tamaño de las matrices multidimensionales se predice multiplicando el tamaño de varias dimensiones. Y almacenan valores en forma de dos formas, como mayor de fila y mayor de columna. Y la asignación de memoria valida las propiedades de longitud y rango.

En C, la matriz multidimensional tiene tres tipos:

  1. Matriz bidimensional
  2. Matriz tridimensional
  3. Matriz de cuatro dimensiones

1. Matriz bidimensional

La matriz bidimensional se estructura como matrices y se implementa utilizando filas y columnas, también conocidas como una matriz de matrices. La asignación de memoria se realiza en fila mayor y columna mayor. Y el formato predeterminado es Row-Major. Cuando se toma una matriz 2-D, cada elemento se considera una matriz 1-D o se sabe que es una colección de una matriz 1-D. La matriz de dos d usa dos para bucles o bucles anidados donde los bucles externos se ejecutan desde 0 hasta el subíndice inicial.

Sintaxis:

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

Ejemplo:

int td (4)(3);

aquí 4 es el no. de filas y 3 es el no. de columnas

Inicialización de matriz bidimensional

La inicialización en la matriz 2-D se realiza de varias maneras, se muestra aquí.

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

Aquí, hemos mencionado el no. de filas y columnas en el cuadro Es obligatorio asignar el segundo índice para que el compilador comprenda sobre el final y el inicio de la fila. La siguiente tabla muestra la asignación de memoria de la matriz 2-D.

El número de elementos se determina manipulando un número de filas y columnas y multiplicando no. de filas y columnas respectivamente. por ejemplo, el no. de elementos que una matriz contiene B (-2 … 4, -3.6). Se calcula por límite inferior y límite superior.

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

Implementación

Se realiza utilizando implementaciones de fila mayor y columna mayor

Fila mayor:
La fórmula para la manipulación de direcciones se da como:
= B +W ( n(I-1) +(J-1))
Donde b- es la dirección base yn- No. de columnas para W bytes.
Columna Mayor:
= B +W ( r(j-1) +(i-1))
donde r - es el no. de filas

Ejemplos de matriz bidimensional

Ejemplos de matriz bidimensional son:

Ejemplo 1

Cada elemento de una matriz A (-10.10, 20 … 35) necesita 1 byte de memoria. Y la matriz encaja en la columna principal en la dirección 400, encuentre la ubicación de A (0, 30).

Solución

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

Una operación familiar realizada en la matriz 2-d es Álgebra de matrices con m * n Matriz de B. El concepto matemático de la matriz se implementa de la misma manera que en la programación.

El siguiente ejemplo almacena un elemento en el formato de matriz e imprime lo mismo.

Código:

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

Salida:

Ejemplo # 2

Programa C que realiza la suma de dos matrices.

Código:

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

El programa anterior calcula la suma de dos matrices A (20, 20) B (20, 20) siempre que tengan dos matrices idénticas. A través del bucle for, se necesitan dos matrices de entrada y bucles para aceptar la matriz.

Salida:

Ejemplo # 3

Transposición de una matriz

Intercambiando filas y columnas para formar una nueva matriz que se conoce como la transposición de una matriz.

Ejemplo:

Luego transponer dar,

Transposición de matriz utilizando el programa C

Código:

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

En el programa anterior Para leer una matriz, usamos dos bucles for y para imprimir su transposición, el bucle for anidado se usa para mostrar la salida. Aquí hemos utilizado la matriz 3 * 3.

Salida:

2. Matriz tridimensional

Se llama una matriz de elementos de matriz o una matriz de matrices. Es bastante ruidoso, pero una vez que obtienes práctica hacia la lógica, es más fácil de implementar. y esta matriz tridimensional requiere más de tres dimensiones y requiere la mayor cantidad de memoria para almacenar.

Se puede declarar como:

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

int L (3) (4) (2); Aquí la matriz L puede contener 24 elementos. Y todos estos pueden inicializarse durante el proceso de compilación, pero cuando no se inicializan, se colocan en un valor basura.

La inicialización se puede hacer de la misma manera que una matriz bidimensional. Aquí hay una muestra,

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

Ejemplos de matriz tridimensional

Estos son algunos ejemplos de la matriz tridimensional que se dan a continuación:

Ejemplo 1

A continuación viene un ejemplo simple en la programación en C que ilustra la matriz tridimensional. Se hace usando un bucle considerando 3 para bucles para elementos 3d.

Código:

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

Salida:

Ejemplo # 2

Otro ejemplo de una matriz 3D para imprimir elementos automáticamente.

Código:

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

Salida:

3. Matriz de cuatro dimensiones

Es una matriz de matriz tridimensional y es muy difícil en la gestión de las dimensiones. Se ve como un montón de cubos juntos y aplicable para vectores espaciales.

Declaración de matriz 4-D:

Escriba el nombre de la matriz (1) (2) (3) (4) ……. (n) donde 1, 2 denota las dimensiones yn implica enésimas dimensiones.

Ejemplo:

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

Ejemplo de matriz de cuatro dimensiones

Programa C para implementar la matriz 4-D.

Código:

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

Salida:

Conclusión

Hasta el final, en este artículo, discutimos las matrices multidimensionales y sus subtipos en la programación en C. Y también, su declaración y acceso a los elementos en formato matricial. Estas técnicas se aplican en el concepto, como la implementación de búsqueda y clasificación binarias. Aquí un índice juega un papel clave ya que especifican un elemento en la estructura de la matriz.

Artículos recomendados

Esta es una guía para la matriz multidimensional en C. Aquí discutimos cómo inicializar la matriz multidimensional en C junto con ejemplos. También puede consultar los siguientes artículos para obtener más información.

  1. Mejores compiladores de C
  2. Matrices 2D en C #
  3. Matrices 2-D en C
  4. Clases de almacenamiento C
  5. C Multiplicación de la matriz de programación
  6. 3 diferentes tipos de matrices en PHP (ejemplos)
  7. ¿Cómo funciona la matriz en Unix con sintaxis?