Vous êtes sur la page 1sur 5

ARREGLOS EN LENGUAJE C

CONTENIDO
Concepto de arreglo Clculo de la desviacin estndar

CONCEPTO DE ARREGLO
En el campo de la programacin, en muchas ocasiones se van a manejar diversas variables del mismo tipo que recibirn el mismo tratamiento. Por ejemplo: para la reservacin y venta de boletos de un autobs, para la frecuencia de calificaciones, para la multiplicacin de matrices, etc. Se podran definir n variables del mismo tipo, pero sera un mtodo demasiado lento de programar y de modificar. Para estos casos se tienen los arreglos. Los arreglos son estructuras que contienen datos del mismo tipo. El arreglo recibe un nombre y los elementos se ubican a travs de uno o ms ndices. Cuando el arreglo es de un solo ndice se le conoce como arreglo unidimensional o vector; cuando es de dos ndices, como arreglo bidimensional o matriz. En el caso de lenguaje Pascal se estipulan los dos lmites del arreglo. Por costumbre se comienza del dato 1, pero tcnicamente puede principiar en cualquier punto. { arreglo de 50 posiciones en Pascal. Cada elemento es de tipo carcter } arreglo : array [1..50] of char; En Pascal, el ndice puede ser tambin de tipo carcter. { arreglo de 26 posiciones en Pascal. Cada elemento es de tipo entero } frecuencia : array ['A'..'Z'] of integer; En BASIC la dimensin del arreglo se estipula con un nico dato. El arreglo comienza en la posicin 1. DIM arreglo(5) 5 ' arreglo de 5 posiciones en BASIC: de la 1 a la

En los lenguajes C, C++, JavaScript y Java los arreglos tambin se indican con un nico dato, pero inician en la posicin cero. char arreglo[5]; la 0 a la 4 */ /* arreglo de 5 posiciones en lenguaje C: de

Un aspecto importante en los arreglos es si el tamao de estos se establece en tiempo de compilacin (como el caso de lenguaje Pascal y C) o en tiempo de ejecucin (como en Java). Lgicamente, el segundo caso ofrece mayor versatilidad.

Arreglos en lenguaje C

(Jos Luis Lpez Goytia)

En todos los lenguajes, cuando se quiere acceder a un elemento para modificarlo se escribe el nombre del arreglo y entre corchetes el ndice correspondiente (en el caso de BASIC se usan parntesis en lugar del corchete). Suponiendo las siguientes declaraciones en lenguaje C. int datos [5], i; Despus de aplicar las siguientes instrucciones: for (i=0; i < 5; i++) datos[i] = 0; datos [1] = 7; datos [4] = 12; datos [0] = datos [1]; datos [2] = datos [4] + 1; El contenido del arreglo sera: 0 7 1 7 2 13 3 0 4 12

Siguiendo con el mismo ejemplo. La instruccin datos [5] = 0; sera invlida porque no existe la localidad 5. Se debe tener especial cuidado en no intentar acceder fuera de los lmites del arreglo.

CALCULO DE LA DESVIACION ESTANDAR


(ndice)

El clculo de la desviacin estndar es un ejemplo en el cual forzosamente se aplican arreglos. 1 El clculo se realiza de la siguiente forma : 1) Suponga que se quiere obtener la desviacin estndar de los siguientes nmeros: 8, 9, 10, 5 , 7. 2) Se obtiene el promedio. En nuestro caso: (8 + 9 + 10 + 5 + 7) / 5 = 7.8 3) Se obtiene la sumatoria del cuadrado de las diferencias entre cada dato y el promedio (8 7.8)
2

+ (9 7.8) + (10 7.8) + (5 - 7.8) + (7 7.8) = 14.8

4) Se divide entre el nmero de datos y se extrae la raz cuadrada. ________ (14.80 / 5) = 1.72 Como se observar, es necesario leer los nmeros y obtener su promedio (paso 1 y 2). Esos datos volvern a ser requeridos. Como es ilgico pedirlos nuevamente al usuario, debern ser almacenados bajo algn mtodo. Al ser datos del mismo tipo, la forma ms prctica es un arreglo. Ya en el arreglo, se har un recorrido a travs del arreglo para calcular la sumatoria de la diferencia entre cada dato y el promedio (paso 3).
1

La frmula es distinta para una muestra y para la poblacin total. En nuestro caso, asumiremos que esos valores son toda la poblacin existente.

Arreglos en lenguaje C

(Jos Luis Lpez Goytia)

Finalmente, se har la divisin y la raz cuadrada (paso 4). El programa queda de la siguiente manera. /* Programa que calcula la desviacin nmeros Probado en Dev-C++ 4.9.8.0 Elabor: Jos Luis Lpez Goytia. */ estndar de un grupo de

#include <conio.h> #include <math.h> main() { float datos[50]; /* arreglo para guardar los datos */ float dato; /* variable auxiliar para leer el dato del usuario */ float promedio, suma=0; /* promedio y suma de los datos del usuario */ float s=0; /* desviacin estndar */ int numdatos; /* nmero de datos que proporcionar el usuario */ int i; /* variable auxiliar para controlar los ciclos */ printf("Programa para calcular la desviacion estndar.\n"); printf("Cuntos nmeros va a ingresar (mximo 50)?\n"); scanf("%d", &numdatos); printf("\nIngrese los datos a calcular\n"); for (i=0; i<numdatos; i++) { scanf("%f", &dato); suma += dato; datos[i] = dato; } promedio = suma / numdatos; for (i=0; i<numdatos; i++) { /* suma el cuadrado de diferencias */ s += (datos[i] - promedio) * (datos[i] - promedio); } s = sqrt(s/numdatos); printf("\n\nResultado = %6.2f \n", s); printf("\n\nOprima cualquier tecla para continuar\n"); getch(); } El resultado sera como sigue: Programa para calcular la desviacin estndar. Cuntos nmeros va a ingresar (mximo 50)? 5 Ingrese los datos a calcular: 8 9 10 5 7 Resultado = 1.72 Arreglos en lenguaje C (Jos Luis Lpez Goytia)

las

Oprima cualquier tecla para continuar...

EJERCICIOS

(ndice)

Realice un programa que reciba n nmeros enteros y despliegue cuantos de esos nmeros son mayores al ltimo nmero proporcionado. La pantalla sera similar a la siguiente (valor 4 puntos):

Bienvenido. Este programa le dir cuantos nmeros son mayores al ltimo nmero que capture. Cuntos nmeros va a capturar? 5 Indique los nmeros: 6 7 9 10 8 Hay 2 nmeros mayores al ltimo nmero capturado. Sugerencia: cree un arreglo que guarde los nmeros capturados y despus recorra ese arreglo con un ciclo contando los nmeros mayores al ltimo dato que se proporcion.

Suponga que hay un camin con 10 lugares. Todos estn disponibles al principio. Realice un programa que permita al usuario reservar "n" lugares, indicando cuales. Al final, despliegue los lugares an disponibles (valor 5 puntos) Este programa reserva lugares en camin. Cuntos lugares desea reservar? 3 Cules 4 7 9 Los lugares an disponibles son: 1 2 3 5 6 8 10 Notas: si el usuario da un lugar mayor de 10 simplemente se har caso omiso de este dato. Variante. Cambie la pantalla por la siguiente: Este programa reserva lugares en camin. Cuntos lugares desea reservar? 3 Cules 4 7 9 Situacin al final: 1 2 3 4 5 6 7 8 9 10 D D D - D D - D - D

Declare, llene y despliegue el arreglo utilizando el menor nmero de lneas de cdigo posibles. La primera lnea es el contenido y la segunda es el ndice (2 puntos):

Arreglos en lenguaje C

(Jos Luis Lpez Goytia)

VALOR 65 INDICE 15

0 0

1 1

4 2

9 3

16 4

25 5

36 6

49 7

64 8

59 9

60 10

61 11

62 12

63 13

64 14

Suponga que existe el siguiente arreglo: 0 1 2 3 4 5 6 7 8 9 10 8 9 1 6 7 12 10 3 4 13 0 Pida un nmero al usuario. Trate de ubicar ese nmero en el arreglo. Si existe, despliegue el primer lugar donde lo encontr. En caso contrario, seale que el nmero no existe. Por ejemplo: si el usuario da 9, su programa debe decir ubicado en el lugar 1.

Arreglos en lenguaje C

(Jos Luis Lpez Goytia)

Vous aimerez peut-être aussi