Tarea 3 de Almacenamiento y Recuperación de la
Información
Trimestre 2007 Otoño
Entrega: 5 de noviembre de 2007 a las 22:00.
El propósito de esta tarea es el de practicar la
compactación secuencial de archivos con
registros de longitud fija. Se
considerarán tres archivos llamados inicial, operaciones y final.
El archivo inicial
contendrá una serie
de registros de longitud fija con un número fijo de campos de
longitud fija. En particular, cada registro del archivo inicial contendrá un
campo borrado y los
campos día, mes y año de una fecha, en ese
orden. El campo de borrado usará un caracter '.' o '*', el campo de día
usará 2 caracteres numéricos, el campo de mes usará 10 letras
minúsculas y el campo de año
usará 4 caracteres numéricos. Todos los campos
estarán alineados a la izquierda y los caracteres que no sean
parte del campo serán puntos '.'. El campo de borrado se
interpreta como "no borrado" si es un '.' y "borrado" si es un '*'.
El archivo operaciones
contendrá una serie de registros de longitud fija que describen
posibles operaciones de inserción, borrado o
compactación. En particular, cada registro del archivo
operaciones contendrá un campo de operación y los
campos día, mes y año de una fecha, en ese
orden. El campo de operación
usará un caracter 'I',
'B' o 'C' y los otros tres campos
serán de la misma forma que están descritos para el
archivo inicial.
El archivo final
contendrá una serie
de registros de longitud fija del mismo tipo que los del archivo inicial. La forma de construir
el archivo final
será la siguiente:
- Se comienza con el archivo final
idéntico al archivo inicial.
- Se procesarán uno por uno y en el orden de
aparición los registros del archivo operaciones.
- Si el campo de operación
del registro que se está procesando contiene una 'I' entonces se
insertará el registro correspondiente en el primer lugar
disponible (ya sea en el lugar de un registro borrado o al final si no
hay registros borrados).
- Si el campo de operación
del registro que se está procesando contiene una 'B' entonces se borrará
el primer registro que coincida (y no se hará nada si no
aparece).
- Si el campo de operación
del registro que se está procesando contiene una 'C' entonces se
compactará el archivo eliminando todos los registros borrados y
manteniendo todos los no borrados exactamente en el mismo orden. En
este caso los demás campos se ignoran.
Escriba un programa de
nombre compacNN
que lleve a cabo esta tarea, donde NN son los dos
dígitos de la
clave que le fue proporcionada por el profesor. Por ejemplo, estos
archivos inicial
y operaciones
deben generar este archivo final. Página de pruebas.