You are on page 1of 2

PRACTICA SOBRE ARCHIVOS

1. Escriba un programa que permita al usuario crear un archivo de nmeros enteros positivos. El usuario debe especificar el nombre del archivo. Los nmeros son ledos interactivamente. Se usar como centinela el nmero 1 para indicar la culminacin de la entrada. En el archivo creado cada nmero debe ocupar 6 espacios, rellenado con blancos a la derecha en caso de ser necesario. 2. Escriba un programa que lea del archivo entrada.txt el nombre (string) y la cdula (entero) de una persona, los cuales se encuentran en una misma lnea, separados por un espacio en blanco; luego debe guardar en el archivo salida.txt la cdula de la persona seguida del nombre, separadas por un espacio en blanco. El archivo entrada.txt se compone de varias lneas, una por cada persona registrada. 3. El archivo desordenado.txt contiene datos de identificacin de 100 personas (nmero de cdula de identidad, primer nombre y primer apellido), estos datos estn separados por espacio en blanco y cada registro est en una lnea diferente. Se quiere producir un archivo de nombre ordenado.txt con el mismo formato y el mismo contenido, salvo que los registros deben estar ordenados de forma creciente por el nmero de cdula. 4. Explique el significado de las siguientes declaraciones en lenguaje C (coloque comentarios):
#define #define #define #define #define NUM_SEX NUM_EDO LON_NOM MIN_EDD MAX_EDD 2 4 15 18 65

typedef enum { Masculino, Femenino } SEXO; typedef enum { Soltero, Casado, Viudo, Divorciado } ESTADO; typedef char NOMBRE[LON_NOM]; typedef short EDAD; typedef struct { NOMBRE apellido; NOMBRE nombre; EDAD edad; SEXO sexo; ESTADO estado; } EMPLEADO; const char *sexo[NUM_SEX] = {"Masculino","Femenino"}; const char *estado[NUM_EDO] = {"Soltero","Casado","Viudo","Divorciado"};

5. Asumiendo las declaraciones del ejercicio anterior, explique qu hace el siguiente programa (coloque comentarios):
main(){ char char FILE FILE EMPLEADO NOMBRE NOMBRE SEXO ESTADO EDAD int entrada[] = "list.txt"; salida[] = "cont.txt"; *efp; *sfp; emp; sexString; edoString; sex; edo; edd; cont[NUM_SEX][NUM_EDO][MAX_EDD-MIN_EDD+1] = {0};

if ((efp = fopen(entrada,"r"))==NULL) { printf("ERROR: No se pudo abrir el archivo \"%s\".\n",entrada); } else { while (!feof(efp)){ fscanf ( efp,"%s %s %d %s %s\n", emp.apellido, emp.nombre, &emp.edad, sexString, edoString ); for ( emp.sexo=Masculino; strcmp(sexo[emp.sexo],sexString); emp.sexo++ ); for ( emp.estado=Soltero; strcmp(estado[emp.estado],edoString); emp.estado++ ); cont[emp.sexo][emp.estado][emp.edad-MIN_EDD]++; } fclose(efp); if ((sfp = fopen(salida,"w"))==NULL) { printf("ERROR: No se pudo abrir el archivo \"%s\".\n",salida); } else { for ( sex=Masculino; sex<=Femenino; sex++) { for ( edo=Soltero; edo<=Divorciado; edo++) { for ( edd=MIN_EDD; edd<=MAX_EDD; edd++) { fprintf ( sfp,"%12s %12s %6d %6d\n", sexo[sex],estado[edo],edd, cont[sex][edo][edd-MIN_EDD] ); } } } fclose(sfp); } } return 0; }

You might also like