problemon
Publicado por Carlos (2 intervenciones) el 23/12/2006 21:57:07
Se tiene un fichero de texto conteniendo información sobre personas. La información de cada persona ocupa tres líneas del fichero, tal y como en el siguiente ejemplo:
54637827/25
Pedro Antonio/Pérez/Arteaga
4/12/31/25/14
• La primera línea contiene el nº de DNI y la edad de la persona separadas por '/'. Se supone que un mismo DNI no aparece más de una vez en el fichero.
• La segunda línea contiene el nombre y los dos apellidos separados por '/'. Ni el nombre ni cada uno de los apellidos superan por separado los 25 caracteres.
• La tercera línea contiene una secuencia de números enteros separados por '/', de los cuales el primero indica cuantos números más hay en la línea y los restantes números representan niveles de diferentes habilidades de la persona en relación con un determinado videojuego. No hay más de 10 habilidades por persona (puede haber cero). El valor de cada habilidad está entre 0 y 99.
Se desea desarrollar un procedimiento que lea la información de este fichero y la use para crear otro de componentes uniformes cuyos registros tengan la siguiente estructura:
• Campo 1: una ristra fija de 10 caracteres representando el NIF correspondiente al DNI, con la letra al final y separada del número por un guión ("54637827-Q").
• Campos 2, 3 y 4: respectivamente, nombre, primer apellido y segundo apellido, todos representados como ristras de tamaño limitado a 25 caracteres.
• Campo 5: la edad, representada como un rango de números naturales entre 1 y 199.
• Campo 6: un número real representando la habilidad promedio (promedio de las habilidades) de la persona (si no hay habilidades se escribirá como media el valor 0.0).
• Campo 7: un número natural indicando el número de habilidades de la persona cuyo valor es mayor o igual que su promedio.
El orden de los registros en este fichero será el mismo que tienen los datos en el fichero original.
El procedimiento ha de generar además un segundo fichero de componentes uniformes que servirá de índice para la información almacenada en el fichero descrito en el punto anterior y que tendrá la siguiente estructura:
• Campo 1: una ristra fija de 10 caracteres representando el NIF correspondiente al DNI, con la letra al final y separada del número por un guión ("54637827-Q").
• Campo 2: un número natural indicando la posición que ocupa en el primer fichero el registro cuyo NIF coincide con el del campo 1.
Para facilitar su localización, los registros de este segundo fichero deberán estar ordenados según valores crecientes del NIF.
El procedimiento tendrá como único parámetro una ristra de tamaño dinámico que representa el nombre del fichero de texto a tratar. Los ficheros resultantes tendrán el mismo nombre, pero con las extensiones "dat" para el primero (el de datos) e "ind" para el segundo (el índice). Estas extensiones sustituirán a la que tenga el fichero original (si el fichero original no tiene extensión, igualmente se añadirán estas extensiones a los ficheros generados).
Si existen problemas para abrir el fichero de texto original el procedimiento lanzará la excepción "Ex_Fichero_Inexistente". Ante cualquier otro problema que impida el funcionamiento normal del procedimiento se lanzará la excepción "Ex_Problemas". Estas excepciones están declaradas en el procedimiento principal de prueba "prueba_base.adb".
El nombre del procedimiento será "Prac01" y estará almacenado en un fichero llamado "prueba-prac01.adb" como procedimiento separado (separate) del procedimiento "Prueba" definido en "prueba_base.adb".
54637827/25
Pedro Antonio/Pérez/Arteaga
4/12/31/25/14
• La primera línea contiene el nº de DNI y la edad de la persona separadas por '/'. Se supone que un mismo DNI no aparece más de una vez en el fichero.
• La segunda línea contiene el nombre y los dos apellidos separados por '/'. Ni el nombre ni cada uno de los apellidos superan por separado los 25 caracteres.
• La tercera línea contiene una secuencia de números enteros separados por '/', de los cuales el primero indica cuantos números más hay en la línea y los restantes números representan niveles de diferentes habilidades de la persona en relación con un determinado videojuego. No hay más de 10 habilidades por persona (puede haber cero). El valor de cada habilidad está entre 0 y 99.
Se desea desarrollar un procedimiento que lea la información de este fichero y la use para crear otro de componentes uniformes cuyos registros tengan la siguiente estructura:
• Campo 1: una ristra fija de 10 caracteres representando el NIF correspondiente al DNI, con la letra al final y separada del número por un guión ("54637827-Q").
• Campos 2, 3 y 4: respectivamente, nombre, primer apellido y segundo apellido, todos representados como ristras de tamaño limitado a 25 caracteres.
• Campo 5: la edad, representada como un rango de números naturales entre 1 y 199.
• Campo 6: un número real representando la habilidad promedio (promedio de las habilidades) de la persona (si no hay habilidades se escribirá como media el valor 0.0).
• Campo 7: un número natural indicando el número de habilidades de la persona cuyo valor es mayor o igual que su promedio.
El orden de los registros en este fichero será el mismo que tienen los datos en el fichero original.
El procedimiento ha de generar además un segundo fichero de componentes uniformes que servirá de índice para la información almacenada en el fichero descrito en el punto anterior y que tendrá la siguiente estructura:
• Campo 1: una ristra fija de 10 caracteres representando el NIF correspondiente al DNI, con la letra al final y separada del número por un guión ("54637827-Q").
• Campo 2: un número natural indicando la posición que ocupa en el primer fichero el registro cuyo NIF coincide con el del campo 1.
Para facilitar su localización, los registros de este segundo fichero deberán estar ordenados según valores crecientes del NIF.
El procedimiento tendrá como único parámetro una ristra de tamaño dinámico que representa el nombre del fichero de texto a tratar. Los ficheros resultantes tendrán el mismo nombre, pero con las extensiones "dat" para el primero (el de datos) e "ind" para el segundo (el índice). Estas extensiones sustituirán a la que tenga el fichero original (si el fichero original no tiene extensión, igualmente se añadirán estas extensiones a los ficheros generados).
Si existen problemas para abrir el fichero de texto original el procedimiento lanzará la excepción "Ex_Fichero_Inexistente". Ante cualquier otro problema que impida el funcionamiento normal del procedimiento se lanzará la excepción "Ex_Problemas". Estas excepciones están declaradas en el procedimiento principal de prueba "prueba_base.adb".
El nombre del procedimiento será "Prac01" y estará almacenado en un fichero llamado "prueba-prac01.adb" como procedimiento separado (separate) del procedimiento "Prueba" definido en "prueba_base.adb".
Valora esta pregunta


0