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:
  1. Se comienza con el archivo final idéntico al archivo inicial.
  2. Se procesarán uno por uno y en el orden de aparición los registros del archivo operaciones.
  3. 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).
  4. 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).
  5. 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.