Está en la página 1de 6

[CURSO C++/LECCION 4.

4] IDSYSTEMS

Leccion 4.4 – Arreglos multidimensionales

En muchas ocasiones se necesitan almacenar series de datos que se analizan de forma


tabular. Es decir en forma de tabla, con su fila y su columna. Por ejemplo:

Si esos fueran los elementos de un array de dos dimensiones (por ejemplo el array a) el
elemento resaltado (de verde) sería el a[3][1]. La declaración de arrays de dos dimensiones
se realiza así:

int a[3][6];

a es un array de tres filas y seis columnas. Otra forma de declarar es inicializar los valores:

int a[][]={{2,3,4},{4,5,2},{8,3,4},{3,5,4}};

En este caso a es un array de cuatro filas y tres columnas.

Las matrices, tambien llamadas tablas bidimensionales, no son otra cosa que vectores con
dos dimensiones.
Por lo que los conceptos de acceso, inicializacion, etc. son similares. La declaracion de una
variable matriz tiene la forma siguiente:

tipo de datos nombre tabla [tamaño dim1][tamaño dim2];

1
[CURSO C++/LECCION 4.4] IDSYSTEMS

Donde tamaño dim1 y tamaño dim2 indican, respectivamente, el numero de filas y de


columnas que componen la matriz. La figura muestra la representacion grafica habitual de
una matriz de datos.

Otro hecho importante es que las matrices en C se almacenan “por filas”. Es decir, que los
elementos de cada fila se situan en memoria de forma contigua. Ası pues, en la matriz de la
figura anterior, el primer elemento almacenado en memoria es el (0,0), el segundo el (0,1), el
tercero el (0,2), . . . , (0,M-1), despues (1,0), y ası sucesivamente hasta el ultimo elemento, es
decir (N-1,M-1).

Ejemplo:

2
[CURSO C++/LECCION 4.4] IDSYSTEMS

El siguiente ejemplo calcula la matriz traspuesta de una matriz de enteros. La matriz tendria
unas dimensiones maximas seg´un la constante MAX.

Al igual que se utilizan arrays de dos dimensiones se pueden declarar arrays de más
dimensiones.

3
[CURSO C++/LECCION 4.4] IDSYSTEMS

Por ejemplo imaginemos que queremos almacenar las notas de 6 aulas que tienen cada una
20 alumnos y 6 asignaturas. Eso sería un array de una dimensión de 720 elementos, pero es
más claro el acceso si hay tres dimensiones: la primera para el aula, la segunda para el
alumno y la tercera para la asignatura.

En ese caso se declararía el array así:

4
[CURSO C++/LECCION 4.4] IDSYSTEMS

int a[6][20][6];

Y para colocar la nota en el aula cuarta al alumno cinco de la asignatura 3 (un ocho es la
nota):

a[3][4][2]=8;

Cuando un array multidimensional se utiliza como parámetro de una función, entonces se


debe especificar el tamaño de todos los índices excepto del primero. La razón está en que de
otra forma no se pueden calcular los índices correspondientes por parte de la función. Es
decir:

void funcion(int a[][]);

Eso es incorrecto, en cuanto hiciéramos uso de un acceso a a[2][3], por ejemplo, no habría
manera de saber en qué posición de memoria está ese valor ya que sin saber cuántas
columnas forman parte del array, es imposible determinar esa posición. Lo correcto es:

void funcion(int a[][5]);

Ejemplo
El siguiente ejemplo muestra el empleo de una tabla multidimensional. Concretamente, el
programa utiliza una tabla de 3 dimensiones para almacenar 1000 numeros aleatorios. Para
generar numeros aleatorios se usa la funcion rand de la librerıa estandar stdlib.h. Tambien se
ha usado la funcion getchar (stdio.h), que interrumpe el programa y espera a que el usuario
presione una tecla.

5
[CURSO C++/LECCION 4.4] IDSYSTEMS

También podría gustarte