Tarea 4 de Almacenamiento y Recuperación de la
Información
Trimestre 2009 Primavera
Entrega: 17 de julio de
2009 a las 22:00.
El propósito de esta tarea es el de practicar la lectura de
archivos con registros de longitud variable y la escritura de archivos
con
registros de longitud variable.
El archivo de entrada entrada.txt
contendrá una serie de
registros de longitud variable separados por avances de línea.
Cada registro deberá constar de tres campos de longitud variable
separados por una barra vertical. El primer campo será un
número
de uno a cuatro dígitos escrito en decimal en el rango de 1 a
9999 (el campo de año de una fecha). El segundo campo
será una cadena alfabética con al menos un caracter (el
nombre del
mes en una fecha).
El tercer campo será un número
de uno a dos dígitos escrito en decimal en el rango de 1 a 31
(el campo de día en una fecha). Aunque cada campo tiene un rango
bien
definido es posible que
aparezcan registros con contenidos inválidos.
El archivo de salida salida.txt
deberá contener una serie de
registros de longitud variable separados por avances de línea.
Cada registro deberá constar de tres campos de longitud variable
separados por una barra vertical. El primer campo deberá ser un
número
de uno a cuatro dígitos escrito en decimal en el rango de 0 a
9999. El segundo campo deberá ser una cadena alfabética.
El tercer campo deberá ser un número
de uno a dos dígitos escrito en decimal en el rango de 0 a 31.
Excepto por el valor 0 ningún campo de la salida podrá
comenzar con el valor 0.
La idea general es transformar cada uno de los registros del archivo de
entrada en un registro del archivo de salida, suponiendo que ambos
representan fechas. En un registro de la entrada puede ocurrir que
cualquiera de los campos no corresponda con la descripción
mostrada arriba o que la cadena alfabética no represente un mes,
en cuyo caso el registro en la salida deberá decir 0|ilegal|0. Un mes puede quedar
representado por cualquier prefijo de su nombre siempre y cuando lo
identifique de forma única. Por ejemplo el mes enero puede quedar representado
por cualquiera de las cadenas e,
ene o enero. Por otro lado la cadena ma es ilegal porque queda la
duda de si representa a marzo
o a mayo. Para facilitar
las cosas puedes considerar que enero siempre tendrá 31
días, febrero siempre tendrá 28 días, etc.
Escribe un programa llamado arreglaNN
que lleve a cabo la transformación descrita arriba, donde NN es la clave de dos dígitos
asignada por el profesor (si sólo recibiste un dígito X tu clave es 0X). Sólo deberás enviar el
código fuente de tu programa (en C, C++, Java, Pascal, Fortran,
etc. siempre y cuando compilen con gcc, g++, javac, fpc, f77, etc. tal
cual esté instalado en el servidor).