Saltar al contenido

Arreglos multidimensionales y dentados

Una matriz multidimensional es una colección de matrices unidimensionales y puede representar tablas y matrices relacionales. Tanto las matrices como las tablas pueden verse como una colección de filas que pueden ser mapeadas en una matriz de filas (una matriz unidimensional). Las matrices multidimensionales almacenan valores en el orden mayor de las filas, lo que significa que los elementos de todas las filas se almacenan de manera consecutiva (una fila tras otra). Un ejemplo de la vida real de las matrices multidimensionales sería el número total de unidades vendidas cada día, de cada semana en un mes en una tienda.

<pre>1234int[,] sales =newint[,]{{{{10,20,12,15,15,27,35},{9,14,17,19,10,22,39}//… etc. };</pre>
csharp

Arreglos multidimensionales y dentados
Arreglos multidimensionales y dentados

Las matrices multidimensionales también se conocen como Matrices Rectangulares , debido a que el tamaño de cada fila siempre será el mismo. En el caso de la matriz de ventas, el tamaño es 7 y cualquier intento de cambiar el tamaño resultará en un error.

Declaración e inicialización multidimensional

  • Declaración: Las matrices multidimensionales se declaran con sintaxis separada por comas para denotar la multidimensionalidad.

<pre>1int[,] arr;</pre>
csharp

  • Inicialización: Los valores pueden proporcionarse en el momento de la declaración de una matriz utilizando la sintaxis del inicializador.

<pre>12int[,] arrIni ={{{{{{{{2,3},{14,29,37}};</pre>
csharp

  • Sintaxis de inicialización limitada: El tamaño de los conjuntos multidimensionales puede ser limitado, lo que significa que sólo un número definido de conjuntos unidimensionales puede ser suministrado como valores. En este ejemplo, la matriz de ventas sólo puede tener dos entradas de fila.

<pre>123int[,] arrBoundedIni =newint[2,3]{// 2 es el número de filas y 3 es el tamaño de cada fila{11,2,3},{14,29,37}};</pre>
csharp

El inicializador y la sintaxis delimitada también pueden combinarse como:

<pre>12345678910int[,] arrMixSyx =newint[2,3]{/// el número definido de filas es 2{11,2,3},{14,29,37}};//orint[,] arrMixSyx =newint[,]{{{11,2,3},{14,29,37}};</pre>
csharp

Puedes usar a Var como un soporte de lugar. El inicializador y la sintaxis delimitada pueden combinarse como:

<pre>12var arrBoundedIni =newint[2,3]…var arrMixSyx =newint[,]…</pre>
csharp

Asignación de memoria

Las matrices multidimensionales se almacenan de forma lineal como una matriz larga. En la memoria, sólo habrá un único array que está lógicamente separado en múltiples dimensiones del mismo tamaño (igual al número de filas). Las propiedades de Longitud y Rango pueden ser utilizadas para validar la diferencia como:

  • Largo: Devolverá el número de elementos de un conjunto.

<pre>1234int[] arr ={1,2,4};int[,] mulArr =newint[2,3];Consola.WriteLine("Longitud de arr : {0}", arr.Longitud);// salida: 3Console.WriteLine("Longitud del armulArrrMul : {0}", mulArr.Length);// salida: 6</pre>
csharp

La salida de mulArr es 6 que es: número_de_filas * número_de_elementos es decir 2 * 3 = 6

  • Rango: devolverá el número de dimensiones de una matriz.

<pre>1234Console.WriteLine("Rango de arr : {0}", arr.Rank);// salida: 1Console.WriteLine("Rango de armulArrrMul : {0}", mulArr.Rank);// salida: 2Console.WriteLine("Rango de la matriz : {0}",newstring[2,3,3].Rango);// salida: 3// [2,3,3] = 2 filas(arrays) de 3 arrays, cada una con 3 elementos</pre>
csharp

Acceso a la matriz

Los elementos de las matrices multidimensionales se representan como una matriz y se puede acceder a ellos simplemente con el valor del índice de la fila y la columna.

<pre>123456789// 0 = Sección A// 1 = Sección Bstring[,] secciones =newstring[2,3];secciones[0,0]="Tony";secciones[0,1]="Samy"; secciones[0,2]="Jane";secciones[1,0]="Jack";secciones[1,1]="Hans";secciones[1,2]="Fred";</pre>
csharp

Los bucles también se pueden usar para atravesar matrices:

<pre>1234567para(int fila =0; fila< secciones.GetLength(0); fila++){para(int col =0; col < secciones.GetLength(1); col++){char grado =(fila ==0)? 'A':'B';; Console.WriteLine("{0} puntuación de grado {1}",sections[row,col],grade);// salida de demostración: Tony obtuvo un puntaje de grado A}}</pre>
csharp

  • GetLength: Devolverá el tamaño de una matriz en un índice particular.

foreach proporciona una forma conveniente de acceder a todos los valores:

1234foreach(estudiante de cuerda en secciones){ Consola.WriteLine("{0}",estudiante);}

csharp