Está en la página 1de 6

Arrays Multidimensionales

[Anterior] [Siguiente] [Contenido]

Contenido del Captulo:


Introduccin, Qu es un array bidimensional? Inicializar un array multidimiensional Recorrer un array multidimiensional Punteros a arrays multidimiensionales Pasar un array multidimiensional a una funcin Ejercicios

Qu es un array bidimensional?
Hemos visto en el captulo anterior lo conveniente que es usar un array cuando tenemos que usar muchas variables del mismo "tipo". Pero cuando avanzamos un poco ms en programacin podemos encontrarnos que los arrays tambin se nos quedan cortos. Podemos verlo utilizando el ejemplo del captulo anterior: "Supongamos que ahora queremos almacenar las temperaturas de toda la semana. Segn lo que aprendimos en el captulo anterior podramos usar un array unidimiensional por cada da de la semana. En cada uno de esos arrays podramos almacenar las temperaturas de cada da." Una posible solucin sera sta:

#include <stdio.h>

int main() {

int temp_dia1[24]; int temp_dia2[24]; int temp_dia3[24]; ... int temp_dia7[24];

float media = 0; int hora;

for( hora=0; hora<24; hora++ ) { printf( "Temperatura de las %i el da 1: ", hora ); scanf( "%i", &temp_dia1[hora] ); printf( "Temperatura de las %i el da 2: ", hora ); scanf( "%i", &temp_dia1[hora] ); printf( "Temperatura de las %i el da 3: ", hora ); scanf( "%i", &temp_dia1[hora] ); ...

printf( "Temperatura de las %i el da 7: ", hora ); scanf( "%i", &temp_dia1[hora] ); media += temp_dia1[hora] + temp_dia2[hora] + ... + temp_dia3[hora]; } media = media / 24 / 7;

printf( "\nLa temperatura media de toda la semana es %f\n", media ); return 0; }

Fichero: cap10_ejemplo1.c

Nota: os recuerdo que los puntos suspensivos los he puesto para ahorrar espacio, no pueden usarse en un programa. Creo que est claro que nuevamente queda claro que el programa sera un engorro, sobre todo si queremos almacenar las temperaturas de, por ejemplo, un mes. Para declarar un array bidimensional usaremos el siguiente formato: tipo_de_dato nombre_del_array[ filas ] [ columnas ];

Como se puede apreciar, la declaracin es igual que la de un array unidimensional al que le aadimos una nueva dimensin. El programa anterior quedara ahora as:

#include <stdio.h> #define DIAS #define HORAS 7 24

int main() { int temp[DIAS][HORAS];

float media = 0; int hora, dia;

for( dia=0 ; dia<DIAS ; dia++ ) { for( hora=0 ; hora<HORAS ; hora++ ) { printf( "Temperatura de las %d el da %d: ", hora, dia ); scanf( "%i", &temp[dia][hora] );

media += temp[dia][hora]; } } media = media / HORAS / DIAS;

printf( "\nLa temperatura media de toda la semana es %f\n", media ); return 0; }

Fichero: cap10_ejemplo2.c

No tenemos por qu limitarnos a arrays bidimensionales, podemos usar cuantas dimensiones queramos. Para un array de tres dimensiones podramos hacer: int temp[MESES][DIAS][HORAS];
[Arriba]

Inicializar un array multidimiensional


Vimos en el anterior captulo que a los arrays unidimensionales se les podan dar valores iniciales: int temperaturas[24] = { 15, 18, 20, 23, 22, 24, 22, 25, 26, 25, 24, 22, 21, 20, 18, 17, 16, 17, 15, 14, 14, 14, 13, 12 }; Con los array multidimensionales tambin se puede, pero hay que agrupar entre {} cada fila. Por ejemplo:

int temperaturas[3][5] = { 15, 17, { 18, 20, { 12, 17,

{ 20, 25, 10 }, 21, 23, 18 }, 23, 29, 16 } };

El formato a utilizar sera el siguiente: int variable[ filas ][ { columnas { columnas ... , { columnas }; columnas ] = { de la fila 1 }, de la fila 2 }, de la ltima fila },

No debemos olvidar el ';' al final.


[Arriba]

Ejercicios
Ejercicio 1: Solucin:
[Arriba]

[Anterior] [Siguiente] [Contenido] Gorka Urrutia, 1999-2004


cursoc@elrincondelc.com www.elrincondelc.com