Cálculo de la dirección de un elemento en una array N-dimensional

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 = 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *