Tarea 2 de Almacenamiento y Recuperación de la Información

Trimestre 2013 Invierno
Entrega: 4 de febrero de 2013 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 o C++ siempre y cuando compilen con gcc o g++ tal cual esté instalado en el servidor).

Ejemplo de entrada.txt
Ejemplo de salida.txt
2009|jul|17
2009|ju|17
dosmil|julio|17
1972|s|02
2009|07|17
01|e|1
hola|mundo|cruel
2009|julio|17
0|ilegal|0
0|ilegal|0
1972|septiembre|2
0|ilegal|0
1|enero|1
0|ilegal|0