You are on page 1of 3

FUNDAMENTOS DE INFORMTICA 2010-11 facsmil prueba de examen

2 PARTE: PROBLEMAS
Notas: - Escribe nombre y apellidos en cada folio, antes de escribir ninguna otra cosa. - Desarrolla y entrega cada ejercicio por separado, 1 y 2. - Se valorar especialmente la eficiencia de los mtodos y la claridad con la que estn expresados. - La duracin de esta prueba es de 3 horas.

Ejercicio 1.- En una empresa quieren implantar en recepcin una aplicacin que, dndole el nmero de DNI de un empleado, muestre determinada informacin referente a dicho empleado. Se parte de las estructuras de datos siguientes: const MAX_DESPACHOS=250; type tEmpleado=record nombre,primerAp,segundoAp:string[15]; DNI:longint end; tCodigo=string[5]; tDespacho=record codigo:tCodigo; {cdigo del despacho} distribucion:array[1..4] of tEmpleado; ocupacion:integer {nmero de personas que ocupan el despacho} end; tEdificio= record despachos:array[1..MAX_DESPACHOS] of tDespacho; numDespachosOcupados:integer
{a partir de esa posicin, los despachos estn vacos}

end;
Se pide: un procedimiento o funcin (al que se le pasa un dato de tipo tEdificio) que ayude a resolver una parte del problema planteado: que solicite al usuario el DNI del empleado a buscar, y devuelva el cdigo del despacho que ocupa. Si ese DNI no figura como de ningn trabajador de la empresa, debe devolver la cadena NOHAY. Si el usuario introduce un dato que no se corresponde con el tipo solicitado, no se debe permitir que se produzca un error en tiempo de ejecucin, sino que se dar el mensaje correspondiente por pantalla, se devolver la cadena NOHAY, y no har nada ms. Total primer problema: 2 ptos.

Ejercicio 2.- Nepomuceno Anacleto Aurelio es un acaudalado latifundista que utiliza un programa escrito
en Pascal para gestionar su patrimonio rstico. Sus fincas estn formadas por parcelas que, en el registro de la propiedad, se identifican por la provincia, el nmero del polgono y el nmero de parcela. Para cada parcela se anota su superficie (en reas); si es de regado o de secano; si est en barbecho (no se cultiva este ao); si tiene uso como pastos y, por ltimo, si pertenece a un coto de caza (se puede cazar). IMPORTANTE: La lista de parcelas, almacenada en un vector, se mantiene siempre ordenada por los cdigos de Provincia, Polgono y Parcela. Desarrolla las partes del cdigo del programa que se describen (como comentario) .
program patrimonio; const MAX_PARCELAS = ; MAX_PROVINCIAS = 50; type tParcela = record provincia, poligono, parcela : integer; superficie : single; regadio : boolean; {true=regado; false=secano} barbecho : boolean ; {true=no se cultiva este ao} pastos : boolean ; {true=se aprovecha para pastos} coto : boolean ; {true=se puede cazar } end; tProvincia = record codigo : integer ; nombre : string[20]; end; tvProvincias = array[1..50] of tProvincia;

{Vector con las 50 provincias espaolas}

tvParcelas

= array[1..MAX_PARCELAS] of tParcela; {siempre ordenado} record v : tvParcelas; n : integer; end;

tListaParcelas=

{ParcelasOrdenadas: mdulo que comprueba si dos datos tParcela estn ordenados. Debe devolver TRUE si y solo si estn ordenados por provincia, polgono y parcela.} (*** CONSTRUIR (0.25 puntos) ***) {ParcelasIguales: mdulo que comprueba si dos datos de tipo tParcela se refieren a la misma parcela (cdigos de provincia, polgono y parcela).} (*** CONSTRUIR (0.25 puntos) ***) {BuscaParcela: Localiza una parcela determinada, identificada por provincia, polgono y parcela, en la lista de parcelas. Si se encuentra, debe devolver el ndice en el vector donde se encuentra la parcela y el parmetro exito igual a TRUE. Si no se encuentra, deber devolver el lugar donde debera insertarse y el parmetro exito igual a FALSE. NOTA: se pueden utilizar los mdulos anteriores.} (*** CONSTRUIR (0.5 puntos) ***) function BuscaParcela(prov, poli, parc: integer; const l:tListaParcelas; var exito:boolean):integer; {CompraParcela:Mdulo utilizado para insertar nuevas parcelas en la lista cada vez que Nepomuceno Anacleto Aurelio adquiere nuevas propiedades. NOTA: se pueden utilizar los mdulos anteriores.} (*** CONSTRUIR (0.5 puntos) ***) procedure CompraParcela(var lista:tListaParcelas ; const nueva:tParcela);

{TotalesProvincia:Mdulo que calcula, para una provincia determinada, los totales de superficie (en reas) dedicada a cultivo de regado, a cultivo de secano, a pastos y a caza.} (*** CONSTRUIR (0.5 puntos) ***) procedure TotalesProvincia(prov:integer; const lista:tlistaParcelas; var totRegadio,totSecano,totPasto,totCaza: single); {GranListado:Mdulo que escribe un listado en pantalla con el resumen de propiedades de Nepomuceno Anacleto Aurelio. Cada lnea se refiere a una provincia y contiene: cdigo de provincia, nombre de la provincia, Hectreas de regado, Hectreas de secano, Hectreas de pastos, Hectreas de caza. NOTA: una HECTREA equivale a cien reas.} (*** CONSTRUIR (0.5 puntos) ***)
procedure GranListado(const lista_parc:tlistaParcelas, const v_prov: tvProvincias );

Total 2 Problema: 2.5 ptos.

You might also like