2 Estructuras de datos en C: vectores est´aticos y registros
CC 2003, 2008 Andr´ es Marzal e Isabel Gracia
11
/* Lectura de edades */ personas = 0; do { printf ("Introduce edad de la persona %d (si es negativa, acabar): ", personas+1); scanf ("%d", &edad [personas]); personas++; } while (personas < MAX_PERSONAS && edad [personas-1] >= 0); personas--;
12 13 14 15 16 17 18 19 20
...
21 22
return 0;
23 24
}
Imagina que se han introducido edades de 10 personas. La variable personas apunta (conceptualmente) al final de la serie de valores que hemos de considerar para efectuar los c´alculos pertinentes: 0
edad
6
personas
10
MAX PERSONAS
20
1
2
3
4
5
6
18 30 18 19 19 31
7
1
8
9
10
11
12
13
14
15
27 66 -1 887 -55 0 391 0
16
17
18
19
-6 89 322 -2
Ya podemos calcular la edad media, pero con un cuidado especial por las posibles divisiones por cero que provocar´ıa que el usuario escribiera una edad negativa como edad de la primera persona (en cuyo caso personas valdr´ıa 0): edades 7.c 1 2
edades.c
#include <stdio.h> #include <math.h>
3 4
#define MAX_PERSONAS 20
5 6 7 8 9 10
int main(void) { int edad [MAX_PERSONAS], personas, i, j, aux , suma_edad ; float suma_desviacion, media, desviacion; int moda, frecuencia, frecuencia_moda, mediana;
11 12 13 14 15 16 17 18 19
/* Lectura de edades */ personas = 0; do { printf ("Introduce edad de la persona %d (si es negativa, acabar): ", personas+1); scanf ("%d", &edad [personas]); personas++; } while (personas < MAX_PERSONAS && edad [personas-1] >= 0); personas--;
20 21 22 23 24 25 26
if (personas > 0) { /* C´ alculo de la media */ suma_edad = 0; for (i=0; i< personas ; i++) suma_edad += edad [i]; media = suma_edad / (float) personas ;
27 28 29 30 31 32
/* C´ alculo de la desviacion t´ıpica */ suma_desviacion = 0.0; for (i=0; i< personas ; i++) suma_desviacion += (edad [i] - media) * (edad [i] - media); desviacion = sqrt( suma_desviacion / personas );
33
Introducci´ on a la Programaci´ on con C
75