Cmn5

Páginas: 17 (4248 palabras) Publicado: 30 de marzo de 2015
5

Arreglos
Los arreglos (arrays) permiten almacenar vectores y matrices. Los arreglos unidimensionales
sirven para manejar vectores y los arreglos bidimensionales para matrices. Sin embargo, las matrices tambi´en se pueden almacenar mediante arreglos unidimensionales y por medio de apuntadores a
apuntadores, temas que se ver´an en el cap´ıtulo siguiente.
La palabra unidimensional no indica quese trata de vectores en espacios de dimensi´on uno; indica
que su manejo se hace mediante un sub´ındice. El manejo de los arreglos bidimensionales se hace mediante
dos sub´ındices.

5.1

Arreglos unidimensionales

El siguiente ejemplo muestra la definici´on de tres arreglos, uno de 80 elementos doble precisi´on, otro
de 30 elementos enteros y uno de 20 elementos tipo car´acter.
double x[80];
intfactores[30];
char codSexo[20];
Los nombres deben cumplir con las normas para los identificadores. La primera l´ınea indica que se han
reservado 80 posiciones para n´
umeros doble precisi´on. Estas posiciones son contiguas. Es importante
recalcar que en C, a diferencia de otros lenguajes, el primer elemento es x[0], el segundo es x[1], el
tercero es x[2], y as´ı sucesivamente; el u
´ltimo elementoes x[79].
En x hay espacio reservado para 80 elementos, pero esto no obliga a trabajar con los 80; el programa
puede utilizar menos de 80 elementos.
C no controla si los sub´ındices est´an fuera del rango previsto; esto es responsabilidad del programador.
Por ejemplo, si en alg´
un momento el programa debe utilizar x[90], lo usa sin importar si los resultados
son catastr´oficos.
Cuando unpar´ametro de una funci´on es un arreglo, se considera impl´ıcitamente que es un par´ametro
por referencia. O sea, si en la funci´on se modifica alg´
un elemento del arreglo, entonces se modific´o realmente el valor original y no una copia. Pasar un arreglo como par´ametro de una funci´on y llamar esta
funci´on es muy sencillo. Se hace como en el esquema siguiente.
... funcion(..., double x[], ...); //prototipo
//-----------------------------------------------int main(void)
{
double v[30];
...
... funcion(..., v, ...); // llamado a la funcion
59

5. ARREGLOS

...
}
//-----------------------------------------------... funcion(..., double x[],...)// definicion de la funcion
{
// cuerpo de la funcion
...
}
En el esquema anterior, el llamado a la funci´on se hizo desde la funci´on main. Esto no esninguna
obligaci´on; el llamado se puede hacer desde cualquier funci´on donde se define un arreglo o donde a su
vez llega un arreglo como par´ametro.
Tambi´en se puede hacer el paso de un arreglo como par´ametro de la siguiente manera. Es la forma
m´as usual. Tiene involucrada la noci´on de apuntador que se ver´
a en el siguiente cap´ıtulo.
... funcion(..., double *x, ...); // prototipo//-----------------------------------------------int main(void)
{
double v[30];
...
... funcion(..., v, ...); // llamado a la funcion
...
}
//-----------------------------------------------... funcion(..., double *x, ...)// definicion de la funcion
{
// cuerpo de la funcion
...
}
El programa del siguiente ejemplo lee el tama˜
no de un vector, lee los elementos del vector, los escribe y
halla el promedio. Paraesto utiliza funciones. Observe la manera como un arreglo se pasa como par´ametro.
// Arreglos unidimensionales
// Lectura y escritura de un vector y calculo del promedio
//-----------------------------------------------#include
#include
#include
//-----------------------------------------------void lectX(double *x, int n, char c );
void escrX(double *x, int n );double promX( double *x, int n);
//================================================
int main()
{
double v[40];
int n;
printf("\n Promedio de elementos de un vector.\n\n");

60

5.1. ARREGLOS UNIDIMENSIONALES

printf(" numero de elementos : ");
scanf( "%d", &n);
if( n > 40 ){
printf("\n Numero demasiado grande\n\n");
exit(1);
}
lectX(v, n, ’v’);
printf(" v : \n");
escrX(v, n);
printf(" promedio =...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS