PRACTICA SOBRE ARCHIVOS

1. Escriba un programa que permita al usuario crear un archivo de números enteros positivos. El usuario debe especificar el nombre del archivo. Los números son leídos interactivamente. Se usará como centinela el número –1 para indicar la culminación de la entrada. En el archivo creado cada número 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 cédula (entero) de una persona, los cuales se encuentran en una misma línea, separados por un espacio en blanco; luego debe guardar en el archivo “salida.txt” la cédula de la persona seguida del nombre, separadas por un espacio en blanco. El archivo “entrada.txt” se compone de varias líneas, una por cada persona registrada. 3. El archivo “desordenado.txt” contiene datos de identificación de 100 personas (número de cédula de identidad, primer nombre y primer apellido), estos datos están separados por espacio en blanco y cada registro está en una línea 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 número de cédula. 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"};

estado[edo]. sexString.sexo++ ).estado][emp. strcmp(sexo[emp. } } } fclose(sfp). Asumiendo las declaraciones del ejercicio anterior.nombre. if ((efp = fopen(entrada.txt"."%s %s %d %s %s\n". edd<=MAX_EDD. cont[NUM_SEX][NUM_EDO][MAX_EDD-MIN_EDD+1] = {0}. edd++) { fprintf ( sfp. for ( emp. &emp. sex. emp. } fclose(efp). edo++) { for ( edd=MIN_EDD. } else { for ( sex=Masculino.edad-MIN_EDD]++. *efp.apellido. emp. explique qué hace el siguiente programa (coloque comentarios): main(){ char char FILE FILE EMPLEADO NOMBRE NOMBRE SEXO ESTADO EDAD int entrada[] = "list.estado]. *sfp.edd. } else { while (!feof(efp)){ fscanf ( efp.entrada). } } return 0. strcmp(estado[emp. sexo[sex]."r"))==NULL) { printf("ERROR: No se pudo abrir el archivo \"%s\". cont[sex][edo][edd-MIN_EDD] ). edo. edo<=Divorciado.sexo][emp.edad."%12s %12s %6d %6d\n". for ( emp. } .edoString).estado=Soltero.salida).\n". if ((sfp = fopen(salida. sex<=Femenino. edoString. edd. emp. sex++) { for ( edo=Soltero. salida[] = "cont."w"))==NULL) { printf("ERROR: No se pudo abrir el archivo \"%s\". emp.txt".5. emp.sexString).sexo]. sexString.sexo=Masculino.estado++ ). edoString ).\n". cont[emp.

Sign up to vote on this title
UsefulNot useful