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).