06-03-2010, 01:51
Parcial Integrador Fecha: 4/12/09
Algoritmos y Estructura de Datos
Una importante empresa que cuenta con casi 1000 teléfonos internos desea una estadística de su uso por llamadas internas (entre internos) y llamadas externas (con uso de la red telefónica pública), a la que se accede marcando “9”. Para este fin se solicita un algoritmo que realice las siguientes acciones:
1. Un listado por cada responsable, ordenado por su Nº de teléfono interno y día de la llamada, con las llamadas externas únicamente, realizadas desde su interno con el siguiente modelo:
Nombre del Responsable: xxxxxxxxxxx Interno: 999
Día Nº de destino Tiempo de llamada
99 99999999 99 99
99 99999999 99 99
Cantidad de llamadas externas: 9999 Tiempo empleado: 99999 segundos
2. Actualizar los campos: Cantidad de llamadas internas, llamadas externas y “Mes y Año”, del archivo Internos.DAT . Hacer una función MesAnio (mm, aa: Word): longint, que obtenga el dato a grabar en este último campo; tener presente que las llamadas corresponden al mes anterior al del proceso. Usar el procedimiento GetDate (aa, mm, dd, ss).
Para obtenerlo se cuenta con:
a) Un archivo Interno.DAT si ningún orden, con los siguientes internos habilitados donde cada registro contiene:
• Nº de Interno (999)
• Nombre del responsable (20 caracteres)
• Cantidad de llamadas internas (Word)
• Cantidad de llamadas externas (Word)
• Mes y año (mm aaaa)
No todos los internos están habilitados, por lo que no se registran llamadas desde los mismos.
b) Otro archivo Llamadas.DAT con orden cronológico, con los registros de las llamadas realizadas desde los distintos internos durante el mes anterior al proceso, conteniendo la siguiente información:
• Nº de interno (999)
• Día (byte)
• Nº de destino (longint)
• Tiempo de llamada (9999 segundos)
Restricciones:
* Memoria estática para arrays: 8KB.
* Para la creación del array debe usar el procedimiento Insertar_Ordenado_En_Vector, con sus correspondientes parámetros. Para la búsqueda en el Vector, hacerlo con el procedimiento Búsqueda_Binaria.
* Memoria dinámica: Nodos de 11 bytes por Filesize (Llamadas.DAT)
* Se permite una lectura secuencial a cada archivo y 2 accesos directos al archivo Interno.DAT para la actualización solicitada.
Se solicita desarrollar la estrategia y el algoritmo cuyo programa Principal estará formado solo por la invocación a procedimientos. Todos los procedimientos y funciones que se invoquen deben ser desarrollados sin omitir los parámetros.
Algoritmos y Estructura de Datos
Una importante empresa que cuenta con casi 1000 teléfonos internos desea una estadística de su uso por llamadas internas (entre internos) y llamadas externas (con uso de la red telefónica pública), a la que se accede marcando “9”. Para este fin se solicita un algoritmo que realice las siguientes acciones:
1. Un listado por cada responsable, ordenado por su Nº de teléfono interno y día de la llamada, con las llamadas externas únicamente, realizadas desde su interno con el siguiente modelo:
Nombre del Responsable: xxxxxxxxxxx Interno: 999
Día Nº de destino Tiempo de llamada
99 99999999 99 99
99 99999999 99 99
Cantidad de llamadas externas: 9999 Tiempo empleado: 99999 segundos
2. Actualizar los campos: Cantidad de llamadas internas, llamadas externas y “Mes y Año”, del archivo Internos.DAT . Hacer una función MesAnio (mm, aa: Word): longint, que obtenga el dato a grabar en este último campo; tener presente que las llamadas corresponden al mes anterior al del proceso. Usar el procedimiento GetDate (aa, mm, dd, ss).
Para obtenerlo se cuenta con:
a) Un archivo Interno.DAT si ningún orden, con los siguientes internos habilitados donde cada registro contiene:
• Nº de Interno (999)
• Nombre del responsable (20 caracteres)
• Cantidad de llamadas internas (Word)
• Cantidad de llamadas externas (Word)
• Mes y año (mm aaaa)
No todos los internos están habilitados, por lo que no se registran llamadas desde los mismos.
b) Otro archivo Llamadas.DAT con orden cronológico, con los registros de las llamadas realizadas desde los distintos internos durante el mes anterior al proceso, conteniendo la siguiente información:
• Nº de interno (999)
• Día (byte)
• Nº de destino (longint)
• Tiempo de llamada (9999 segundos)
Restricciones:
* Memoria estática para arrays: 8KB.
* Para la creación del array debe usar el procedimiento Insertar_Ordenado_En_Vector, con sus correspondientes parámetros. Para la búsqueda en el Vector, hacerlo con el procedimiento Búsqueda_Binaria.
* Memoria dinámica: Nodos de 11 bytes por Filesize (Llamadas.DAT)
* Se permite una lectura secuencial a cada archivo y 2 accesos directos al archivo Interno.DAT para la actualización solicitada.
Se solicita desarrollar la estrategia y el algoritmo cuyo programa Principal estará formado solo por la invocación a procedimientos. Todos los procedimientos y funciones que se invoquen deben ser desarrollados sin omitir los parámetros.