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

Trimestre 2009 Invierno
Entrega: 25 de marzo a las 22:00.

El propósito de esta tarea es el de practicar los conceptos de índices primarios y secundarios vistos en clase.

Considere un archivo lista.txt con registros de longitud variable, cada uno de ellos con dos campos de longitud variable y un campo de longitud fija. Los registros están separados por avances de línea y los campos están separados por barras verticales. Los primeros dos campos constarán de una o más letras mayúsculas y el tercer campo constará de nueve dígitos. Estos campos corresponderán con el nombre, apellido y matrícula de un estudiante.

Escribe un programa listaNN que lea este archivo y que genere un índice primario por matrículas y un índice secundario por apellidos.

El índice primario deberá quedar almacenado en el archivo primario.txt y deberá consistir de registros de longitud fija separados por avances de línea. Cada registro tendrá dos campos numéricos de longitud fija: la matrícula de nueve dígitos y la posición de inicio del registro en seis dígitos. Recuerde que este índice deberá quedar ordenado por el campo de matrícula.

El índice secundario deberá quedar almacenado en el archivo secundario.txt y deberá consistir de registros de longitud fija separados por avances de línea. Cada registro tendrá dos campos de longitud fija: el primero constará de seis letras mayúsculas o espacios y el segundo será la matrícula de nueve dígitos. El campo alfabético contendrá como máximo las primeras seis letras del campo de apellido. En caso de que el apellido mida menos de seis letras entonces se llenará con espacios en blanco. Recuerde que este índice deberá quedar ordenado por su primer campo y en caso de empate por su segundo campo.

Ejemplo

lista.txt
primario.txt
secundario.txt
JOSE|HERNANDEZ|203303035
CRISTINA|DIAZ|206303660
SERGIO|GONZALEZ|206201478
ALFONSO|ALCANTARA|200200490
CARLOS|HERNANDEZ|205306110
ANTONIO|HERNANDEZ|202314716
EDUARDO|MARTINEZ|206203789
MOISES|DIAZ|205360554
LUIS|HERNANDEZ|207333278
JEHU|GONZALEZ|206303246
RUBEN|MARTINEZ|205302297
200200490    75
202314716   130
203303035     0
205302297   256
205306110   103
205360554   185
206201478    49
206203789   158
206303246   232
206303660    25
207333278   207
ALCANT200200490
DIAZ  205360554
DIAZ  206303660
GONZAL206201478
GONZAL206303246
HERNAN202314716
HERNAN203303035
HERNAN205306110
HERNAN207333278
MARTIN205302297
MARTIN206203789