Con base en lo descrito en las entradas anteriores, es posible realizar una generalización para declarar y manipular arreglos n-dimensionales o de n dimensiones ya que:
- Un arreglo es una sucesión contigüa de variables de un mismo tipo de datos.
- Un arreglo de dos dimensiones o matriz es un arreglo de arreglos.
- Un arreglo de tres dimensiones o cubo (si las tres dimensiones son iguales) es un arreglo de arreglos de dos dimensiones, o un arreglo de matrices.
- Un arreglo de cuatro dimensiones o hipercubo (si las cuatro dimensiones son iguales) es un arreglo de arreglos de tres dimensiones, o un arreglo de cubos para el caso de los hipercubos.
- Un arreglo de n dimensiones es un arreglo de arreglos de n-1 dimensiones.
En general, la declaración de un arreglo de n dimensiones tiene la siguiente estructura en el lenguaje de programación C:
tipo_de_dato arreglo_n_dimensional[TAMAÑO1] [TAMAÑO2] . . . [TAMAÑO_N];
en donde:
- tipo_de_dato es cualquier tipo de dato válido en C.
- arreglo_n_dimensional es un identificador válido en C.
- TAMAÑO1 es la longitud para la primera dimensión.
- TAMAÑO2 es la longitud para la segunda dimensión.
- TAMAÑO_N es la longitud para la n-ésima dimensión.
Las siguientes figuras muestran dos posibles representaciones para un arreglo c de tres dimensiones de 4 x 4 x 4. La figura (a) muestra dicho arreglo representado como un cubo; mientras que la figura (b) muestra el mismo arreglo como una representación de malla o arreglo de matrices. Asegúrese de entender la ubicación de los elementos del arreglo tridimensional en ambas representaciones.
(a) Representación de un arreglo de tres dimensiones en forma de cubo. |
(b) Representación de un arreglo de tres dimensiones en forma de malla. |
El Ejemplo 6.9 muestra cómo representar en C (línea 11) la abstracción ilustrada en las figuras anteriores.
Observe cómo para la función imprimeCubo, en la línea 24 se especifica el tamaño de la segunda y tercera dimensión del arreglo c, ya que para arreglos de n dimensiones en general, se debe especificar el tamaño de todas las n-1 dimensiones a partir de la segunda, la única opcional es la primera.
Note también cómo por cada dimensión se tiene un ciclo que controla el recorrido de la misma, y por consiguiente, cada ciclo tiene su propia variable de control. En este orden de ideas, es posible deducir que un arreglo de cuatro dimensiones requerirá de cuatro ciclos y de cuatro variables de control, un arreglo de cinco dimensiones cinco ciclos y cinco variables de control, y así sucesivamente.
Observe cómo para la función imprimeCubo, en la línea 24 se especifica el tamaño de la segunda y tercera dimensión del arreglo c, ya que para arreglos de n dimensiones en general, se debe especificar el tamaño de todas las n-1 dimensiones a partir de la segunda, la única opcional es la primera.
Note también cómo por cada dimensión se tiene un ciclo que controla el recorrido de la misma, y por consiguiente, cada ciclo tiene su propia variable de control. En este orden de ideas, es posible deducir que un arreglo de cuatro dimensiones requerirá de cuatro ciclos y de cuatro variables de control, un arreglo de cinco dimensiones cinco ciclos y cinco variables de control, y así sucesivamente.
Finalmente, es importante hacer notar que aunque el Ejemplo 6.9 presenta las tres dimensiones iguales para el arreglo cubo esto no tiene por qué ser siempre así; de hecho, cada una de las tres dimensiones que definen un arreglo tridimensional pueden ser distintas.
La salida del Ejemplo 6.9 se muestra en la siguiente figura. Note cómo la impresión de cubo se ha hecho en la forma de un arreglo de matrices. Apóyese en la figura anterior (b) para visualizarlo mejor.
La salida del Ejemplo 6.9 se muestra en la siguiente figura. Note cómo la impresión de cubo se ha hecho en la forma de un arreglo de matrices. Apóyese en la figura anterior (b) para visualizarlo mejor.