Arrays N-Dimensionales: La array N-Dimensional es básicamente una array de arrays. Como los arreglos 1-D se identifican como un solo índice, los arreglos 2-D se identifican usando dos índices, de manera similar, los arreglos N-dimensionales se identifican usando N índices. Una array multidimensional se declara de la siguiente manera:
int NDA[S 1 ][S 2 ][S 3 ]……..[S N ];
Explicación :
- Aquí, NDA es el nombre de la array N-Dimensional. Puede ser cualquier nombre de identificador válido .
- En la sintaxis anterior, S 1 , S 2 , S 3 …… S N denota los tamaños máximos de las N dimensiones.
- Se supone que los límites inferiores son ceros para todas las dimensiones.
- La array anterior se declara como una array de enteros. También puede ser cualquier tipo de datos válido que no sea entero.
Cálculo de direcciones de arrays N-dimensionales :
Suposiciones:
- La array N-Dimensional NDA con los tamaños máximos de N dimensiones son S 1 , S 2 , S 3 , ………, S N .
- El elemento cuya dirección necesita ser calculada tiene índices l 1 , l 2 , l 3 , …………..l N respectivamente.
- Es posible que los índices de la array no tengan el límite inferior como cero. Por ejemplo, considere la siguiente array T: T[-5…5][2……9][14…54][-9…-2].
Explicación :
- En la array T anterior , los límites inferiores de los índices no son ceros.
- De modo que los tamaños de los índices de la array ahora son diferentes y se pueden calcular usando la fórmula:
Límite superior – Límite inferior +1
- Entonces, aquí S 1 = 5 – (-5) + 1 = 11. De manera similar, S 2 = 8, S 3 = 41 y S 4 = 8.
Para el cálculo de direcciones, los límites inferiores son t 1 , t 2 , t 3 …….t N . Existen dos formas de almacenar los elementos de la array:
- fila mayor
- columna mayor
La fórmula de la columna principal:
Dirección de NDA[I 1 ][I 2 ]. . . [I N ] = BAd + W*[((…E N S N-1 + E N-1 )S N-2 +… E 3 )S 2 + E 2 )S 1 +E 1 ]
- BAd representa la dirección base de la array.
- W representa el ancho de la array, es decir, el número de dimensiones en la array.
- Además, E i viene dado por E i = l i – t i , donde l i y t i son los índices calculados (índices del elemento de array que debe determinarse) y los límites inferiores, respectivamente.
La fórmula de la fila principal:
Dirección de NDA[I 1 ][I 2 ]. . . .[l N ] = BAd + W*[((E 1 S 2 + E 2 )S 3 +E 3 )S 4 ….. + E N-1 )S N + E N ]
La forma más sencilla de aprender las fórmulas:
Para fila mayor: Si ancho = 5, la secuencia interior es E 1 S 2 + E 2 S 3 + E 3 S 4 + E 4 S 5 + E 5 y si ancho = 3, la secuencia interior es E 1 S 2 + mi 2 S 3 + mi 3 . Calcule el patrón en el orden y siga cuatro pasos básicos para la fórmula de cualquier ancho:
- Escribe la secuencia interior.
- Ponga el corchete de cierre después de cada E excepto el primer término. Entonces para ancho = 5, se convierte en
Mi 1 S 2 + Mi 2 )S 3 + Mi 3 )S 4 + Mi 4 )S 5 + Mi 5 ).
- Coloque todos los soportes de apertura inicialmente.
((((E 1 S 2 + E 2 )S 3 + E 3 )S 4 + E 4 )S 5 + E 5 ).
- Incorpore la dirección base y el ancho en la fórmula.
El enfoque es similar para la Columna Mayor, pero el patrón de la secuencia interior es inverso al patrón de la fila mayor.
Para columna mayor: Si ancho =5, la secuencia interior es E 5 S 4 + E 4 S 3 + E 3 S 2 + E 2 S 1 + E 1 .
Ejemplo: tomemos una array multidimensional A[10][20][30][40] con la dirección base 1200 . La tarea es encontrar la dirección del elemento A[1][3][5][6] .
Aquí, BAd = 1200 y ancho = 4.
S1 = 10, S2 = 20, S3 = 30, S4 = 40
Dado que no se dan los límites inferiores, se supone que los límites inferiores son cero.
E1 = 1 – 0 = 1;
E2 = 3 – 0 = 3;
E3 = 5 – 0 = 5;
E4 = 6 – 0 = 6.
Cualquiera de las técnicas (fila principal o columna principal) se puede utilizar para calcular la respuesta (a menos que se especifique).
Al aplicar la fórmula para la fila principal, escriba directamente la fórmula como:
A[1][3][5][6] = 1200 + 4(((1 × 20 + 3)30 +5)40 + 6)
=1200 +4((23 × 30 +5)40 +6)
=1200 + 4(695 × 40 + 6)
=1200 + (4 × 27806)
=112424.
Publicación traducida automáticamente
Artículo escrito por akashgupta752000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA