Está en la página 1de 4

Arreglos unidimensionales y multidimensionales

Los arreglos son una coleccin de variables del mismo tipo que se
referencian utilizando un nombre comn. Un arreglo consta de posiciones
de memoria contigua. La direccin ms baja corresponde al primer
elemento y la ms alta al ltimo. Un arreglo puede tener una o varias
dimensiones. Para acceder a un elemento en particular de un arreglo se
usa un ndice.
El formato para declarar un arreglo unidimensional es:
tipo nombre_arr [ tamao ]
Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez
elementos se hace de la siguiente forma:
int listanum[10];
En C, todos los arreglos usan cero como ndice para el primer elemento.
Por tanto, el ejemplo anterior declara un arreglo de enteros con diez
elementos desde listanum[0] hasta listanum[9].
La forma como pueden ser accesados los elementos de un arreglo, es de la
siguiente forma:
listanum[2] = 15; /* Asigna 15 al 3er elemento del arreglo listanum*/
num = listanum[2]; /* Asigna el contenido del 3er elemento a la variable
num */
El lenguaje C no realiza comprobacin de contornos en los arreglos. En el
caso de que sobrepase el final durante una operacin de asignacin,
entonces se asignarn valores a otra variable o a un trozo del cdigo, esto
es, si se dimensiona un arreglo de tamao N, se puede referenciar el
arreglo por encima de N sin provocar ningn mensaje de error en tiempo de
compilacin o ejecucin, incluso aunque probablemente se provoque el fallo
del programa. Como programador se es responsable de asegurar que todos
los arreglos sean lo suficientemente grandes para guardar lo que pondr en
ellos el programa.
C permite arreglos con ms de una dimensin , el formato general es:
tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN];
Por ejemplo un arreglo de enteros bidimensionales se escribir como:

int tabladenums[50][50];
Observar que para declarar cada dimensin lleva sus propios parntesis
cuadrados.
Para acceder los elementos se procede de forma similar al ejemplo del
arreglo unidimensional, esto es,
tabladenums[2][3] = 15; /* Asigna 15 al elemento de la 3 fila y la 4
columna*/
num = tabladenums[25][16];
A continuacin se muestra un ejemplo que asigna al primer elemento de un
arreglo bidimensional cero, al siguiente 1, y as sucesivamente.
main()
{
int t,i,num[3][4];
for(t=0; t<3; ++t)
for(i=0; i<4; ++i)
num[t][i]=(t*4)+i*1;
for(t=0; t<3; ++t)
{
for(i=0; i<4; ++i)
printf("num[%d][%d]=%d ", t,i,num[t][i]);
printf("\n");
}
}
En C se permite la inicializacin de arreglos, debiendo seguir el siguiente
formato:
tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores};
Por ejemplo:
int i[10] = {1,2,3,4,5,6,7,8,9,10};
int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
Cadenas
A diferencia de otros lenguajes de programacin que emplean un tipo
denominado cadena string para manipular un conjunto de simbolos, en C,

se debe simular mediante un arreglo de caracteres, en donde la terminacin


de la cadena se debe indicar con nulo. Un nulo se especifica como '\0'. Por
lo anterior, cuando se declare un arreglo de caracteres se debe considerar
un carcter adicional a la cadena ms larga que se vaya a guardar. Por
ejemplo, si se quiere declarar un arreglo cadena que guarde una cadena de
diez caracteres, se har como:
char cadena[11];
Se pueden hacer tambin inicializaciones de arreglos de caracteres en
donde automticamente C asigna el caracter nulo al final de la cadena, de
la siguiente forma:
char nombre_arr[ tam ]="cadena";
Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':
char cadena[5]="hola";
El cdigo anterior es equivalente a:
char cadena[5]={'h','o','l','a','\0'};
Para asignar la entrada estndar a una cadena se puede usar la funcin
scanf con la opcin %s(observar que no se requiere usar el operador &), de
igual forma para mostrarlo en la salida estndar.
Por ejemplo:
main()
{
char nombre[15], apellidos[30];
printf("Introduce tu nombre: ");
scanf("%s",nombre);
printf("Introduce tus apellidos: ");
scanf("%s",apellidos);
printf("Usted es %s %s\n",nombre,apellidos);
}
El lenguaje C no maneja cadenas de caracteres, como se hace con enteros
o flotantes, por lo que lo siguiente no es vlido:
main()
{
char nombre[40], apellidos[40], completo[80];

nombre="Jos Mara";
/* Ilegal */
apellidos="Morelos y Pavn";
/* Ilegal */
completo="Gral."+nombre+appellidos; /* Ilegal */
Espero que le entiendas piwi, y mas al raton te envio otro programas, pero
cambiale al ejemplo si lo vas a usar