You are on page 1of 12

Aplicacin prctica de un rbol Se tiene un fichero de texto ASCII.

Para este propsito puede servir cualquier libro electrnico de la librera Gutenberg o Cervantes, que suelen tener varios cientos de miles de palabras. El objetivo es clasificar todas las palabras, es decir, determinar que palabras aparecen, y cuantas veces aparece cada una. Palabras como 'nio'-'nia', 'vengo'-'vienes' etc, se consideran diferentes por simplificar el problema. Escribir un programa, que recibiendo como entrada un texto, realice la clasificacin descrita anteriormente. Ejemplo: Texto: "a b'a c. hola, adios, hola" La salida que produce es la siguiente: a2 adios 1 b1 c1 hola 2

Ejercicio n4:
Supongamos que TEST es alguna funcin Booleana que toma cualquier entero dado y devuelve un valor igual o distinto a cero.Consideremos el siguiente segmento de cdigo:
N=3; p=CrearPila(sizeof(int)); for (i=1;i<=N;i++) if (TEST(i)) printf("%d",i); else Push(&i,p); while (!VaciaPila(p)){ Tope(&i,p); Pop(p); printf("%d",i); }

Cules de las siguientes son posibles salidas del cdigo anterior?. a)1 2 3 b)1 3 2 c)2 1 3 d)3 1 2 e)2 3 1

La solucin es que salidas posibles son la primera,segunda,quinta y sexta por: 1. La salida 1 2 3 se produce cuando TEST devuelve valor distinto de cero en los 3 casos. 2. La salida 1 3 2 se produce cuando TEST devuelve 0 slo para el 2. 3. La salida 2 3 1 se produce cuando TEST devuelve 0 slo para el 1. 4. La salida 3 2 1 se produce cuando TEST devuelve 0 en los tres casos. En general,sern salidas correctas aquellas que impriman una secuencia de N nmeros de forma que se pueda dividir en dos partes: 1. Los M primeros nmeros mi de forma que mi< mi+1 para todo i,1 <=i <=M1(0<=M<=N)(los no almacenados en la pila,es decir,los nmeros i tal que TEST(i) es distinto de cero). 2. Los N-M ltimos nmeros que consisten en todos los nmeros entre 1 y N que no hayan sido listados en la primera parte y adems listados de forma decreciente.(Los almacenados en la pila,es decir,los nmeros i tal que TEST(i) es cero).

Ejercicio n2:
El recorrido en preorden de un determinado rbol binario es: GEAIBMCLDFKJH y en inorden IABEGLDCFMKHJ .Resolver: A)Dibujar el rbol binario. B)Dar el recorrido en postorden. C)Disear una funcin para dar el recorrido en postorden dado el recorrido en preorden e inorden y escribir un programa para comprobar el resultado del apartado anterior. (SOLUCIN)

SOLUCIN AL EJERCICIO N 2 DE RBOLES BINARIOS


Las soluciones son las siguientes: A) El rbol correspondiente es el de la siguiente figura:

B)El recorrido en postorden es IBAEDLFCHJKMG. C)El cdigo solucin al tercer apartado es el siguiente:
/*Fichero: comprobar.c */ #include < stdio.h> #include < stdlib.h> #include < string.h> char *preorden="GEAIBMCLDFKJH"; char *inorden="IABEGLDCFMKHJ"; char *postorden; /*---------------------------------------*/ void post(char *pre,char *in,char *pos,int n) { int longIzqda; if(n!=0){ pos[n-1]=pre[0]; longIzqda=strchr(in,pre[0])-in; post (pre+1,in,pos,longIzqda); post (pre+1+longIzqda,in+1+longIzqda,pos+longIzqda,n-1-longIzqda); } } /*----------------------------------------*/ int main(int argc,char *argv[]) { int aux;

aux=strlen(preorden); postorden=(char *)malloc(aux*sizeof(char)); if (postorden){ printf("El preorden es: %s\n",preorden); printf("El inorden es: %s\n",inorden); post(preorden,inorden,postorden,aux); postorden[aux]='\0'; printf("El postorden calculado es: %s\n",postorden); free(postorden); } else{ fprintf(stderr,"Error: Sin memoria\n"); return 1; } } return 0;

Ejercicio n1:
Dada la secuencia de claves enteras:100,29,71,82,48,39,101,22,46, 17,3,20,25,10.Representar grficamente el rbol AVL correspondiente. Elimine claves consecutivamente hasta encontrar un desequilibrio y dibuje la estructura del rbol tras efectuarse la oportuna restauracin. (SOLUCIN)

SOLUCIN AL EJERCICIO N 1 DE RBOLES AVL

Se elimina el 100 y a continuacin el 29.Al suprimir el 29 es necesario efectuar una restauracin del tipo rotacin simple y el rbol queda con la siguiente estructura:

Examen para base de datos EJERCICIO 1 A partir del siguiente enunciado se desea realiza el modelo entidad-relacin. Una empresa vende productos a varios clientes. Se necesita conocer los datos personales de los clientes (nombre, apellidos, dni, direccin y fecha de nacimiento). Cada producto tiene un nombre y un cdigo, as como un precio unitario. Un cliente puede comprar varios productos a la empresa, y un mismo producto puede ser comprado por varios clientes.Los productos son suministrados por diferentes proveedores. Se debe tener en cuenta que un producto slo puede ser suministrado por un proveedor, y que un proveedor puede suministrar diferentes productos. De cada proveedor se desea conocer el NIF, nombre y direccin. EJERCICIO 2 A partir del siguiente enunciado se desea realizar el modelo entidad-relacin. Se desea informatizar la gestin de una empresa de transportes que reparte paquetes por toda Espaa. Los encargados de llevar los paquetes son los camioneros, de los que se quiere guardar el dni, nombre, telfono, direccin, salario y poblacin en la que vive. De los paquetes transportados interesa conocer el cdigo de paquete, descripcin, destinatario y direccin del destinatario. Un camionero distribuye muchos paquetes, y un paquete slo puede ser distribuido por un camionero.De las provincias a las que llegan los paquetes interesa guardar el cdigo de provincia y el nombre. Un paquete slo puede llegar a una provincia. Sin embargo, a una provincia pueden llegar varios paquetes.De los camiones que llevan los camioneros, interesa conocer la matrcula, modelo, tipo y potencia. Un camionero puede conducir diferentes camiones en fechas diferentes, y un camin puede ser conducido por varios camioneros. EJERCICIO 3 A partir del siguiente enunciado disear el modelo entidad-relacin. Se desea disear la base de datos de un Instituto. En la base de datos se desea guardar los datos de los profesores del Instituto (DNI, nombre, direccin y telfono). Los profesores imparten mdulos, y cada mdulo tiene un cdigo y un nombre. Cada alumno est matriculado en uno o varios mdulos. De cada alumno se desea guardar el n de expediente, nombre, apellidos y fecha de nacimiento. Los profesores pueden impartir varios mdulos,

pero un mdulo slo puede ser impartido por un profesor. Cada curso tiene un grupo de alumnos, uno de los cuales es el delegado del grupo. EJERCICIO 4 A partir del siguiente supuesto disear el modelo entidad-relacin. Se desea disear una base de datos para almacenar y gestionar la informacin empleada por una empresa dedicada a la venta de automviles, teniendo en cuenta los siguientes aspectos:La empresa dispone de una serie de coches para su venta. Se necesita conocer la matrcula, marca y modelo, el color y el precio de venta de cada coche.Los datos que interesa conocer de cada cliente son el NIF, nombre, direccin, ciudad y nmero de telfono: adems, los clientes se diferencian por un cdigo interno de la empresa que se incrementa automticamente cuando un cliente se da de alta en ella. Un cliente puede comprar tantos coches como desee a la empresa. Un coche determinado solo puede ser comprado por un nico cliente.El concesionario tambin se encarga de llevar a cabo las revisiones que se realizan a cada coche. Cada revisin tiene asociado un cdigo que se incrementa automticamente por cada revisin que se haga. De cada revisin se desea saber si se ha hecho cambio de filtro, si se ha hecho cambio de aceite, si se ha hecho cambio de frenos u otros. Los coches pueden pasar varias revisiones en el concesionario. EJERCICIO 5 A partir del siguiente supuesto disear el modelo entidad-relacin. La clnica SAN PATRS necesita llevar un control informatizado de su gestin de pacientes y mdicos.De cada paciente se desea guardar el cdigo, nombre, apellidos, direccin, poblacin, provincia, cdigo postal, telfono y fecha de nacimiento.De cada mdico se desea guardar el cdigo, nombre, apellidos, telfono y especialidad. Se desea llevar el control de cada uno de los ingresos que el paciente hace en el hospital. Cada ingreso que realiza el paciente queda registrado en la base de datos. De cada ingreso se guarda el cdigo de ingreso (que se incrementar automticamente cada vez que el paciente realice un ingreso), el nmero de habitacin y cama en la que el paciente realiza el ingreso y la fecha de ingreso.Un mdico puede atender varios ingresos, pero el ingreso de un paciente solo puede ser atendido por un nico mdico. Un paciente puede realizar varios ingresos en el hospital. EJERCICIO 6 Se desea informatizar la gestin de una tienda informtica. La tienda dispone de una serie de productos que se pueden vender a los clientes.De cada producto informtico se desea

guardar el cdigo, descripcin, precio y nmero de existencias. De cada cliente se desea guardar el cdigo, nombre, apellidos, direccin y nmero de telfono.Un cliente puede comprar varios productos en la tienda y un mismo producto puede ser comprado por varios clientes. Cada vez que se compre un artculo quedar registrada la compra en la base de datos junto con la fecha en la que se ha comprado el artculo.La tienda tiene contactos con varios proveedores que son los que suministran los productos. Un mismo producto puede ser suministrado por varios proveedores. De cada proveedor se desea guardar el cdigo, nombre, apellidos, direccin, provincia y nmero de telfono. EJERCICIO 7 Pasa el modelo entidad-relacin del ejercicio 1 al modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas. EJERCICIO 8 Pasa el modelo entidad-relacin del ejercicio 2 al modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas. EJERCICIO 9 Pasa el modelo entidad-relacin del ejercicio 3 al modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas.Cmo quedara el modelo relacional suponiendo que cada profesor slo imparte un mdulo y cada mdulo es impartido por slo un profesor? EJERCICIO 10 Transforma el modelo entidad-relacin del ejercicio 4 al modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas.Si un cliente slo puede comprar un coche en el concesionario, y un coche slo puede ser comprado por un cliente, cmo quedara el modelo relacional? EJERCICIO 11

Transforma el modelo entidad-relacin del ejercicio 5 a modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas. EJERCICIO 12 Transforma el modelo entidad-relacin del ejercicio 6 al modelo relacional. Disea las tablas en Access, realiza las relaciones que consideres oportunas e inserta cinco registros en cada una de las tablas. EJERCICIO 13 Considera la siguiente relacin PERSONA-TIENE HIJOS-PERSONA. Una persona puede tener muchos hijos/as o ninguno. Una persona siempre es hijo/a de otra persona. Los atributos de la persona son dni, nombre, direccin y telfono. Transformarlo al modelo relacional. EJERCICIO 14 A partir del siguiente enunciado, disear el modelo entidad-relacin. En la biblioteca del centro se manejan fichas de autores y libros. En la ficha de cada autor se tiene el cdigo de autor y el nombre. De cada libro se guarda el cdigo, ttulo, ISBN, editorial y nmero de pgina. Un autor puede escribir varios libros, y un libro puede ser escrito por varios autores. Un libro est formado por ejemplares. Cada ejemplar tiene un cdigo y una localizacin. Un libro tiene muchos ejemplares y un ejemplar pertenece slo a un libro.Los usuarios de la biblioteca del centro tambin disponen de ficha en la biblioteca y sacan ejemplares de ella. De cada usuario se guarda el cdigo, nombre, direccin y telfono. Los ejemplares son prestados a los usuarios. Un usuario puede tomar prestados varios ejemplares, y un ejemplar puede ser prestado a varios usuarios. De cada prstamos interesa guardar la fecha de prstamo y la fecha de devolucin.Pasar el modelo entidadrelacin resultante al modelo relacional. Disear las tablas en Access, realizar las relaciones oportunas entre tablas e insertar cinco registros en cada una de las tablas. EJERCICIO 15 A partir del siguiente supuesto realizar el modelo entidad-relacin y pasarlo a modelo relacional.

A un concesionario de coches llegan clientes para comprar automviles. De cada coche interesa saber la matrcula, modelo, marca y color. Un cliente puede comprar varios coches en el concesionario. Cuando un cliente compra un coche, se le hace una ficha en el concesionario con la siguiente informacin: dni, nombre, apellidos, direccin y telfono.Los coches que el concesionario vende pueden ser nuevos o usados (de segunda mano). De los coches nuevos interesa saber el nmero de unidades que hay en el concesionario. De los coches viejos interesa el nmero de kilmetros que lleva recorridos. El concesionario tambin dispone de un taller en el que los mecnicos reparan los coches que llevan los clientes. Un mecnico repara varios coches a lo largo del da, y un coche puede ser reparado por varios mecnicos. Los mecnicos tienen un dni, nombre, apellidos, fecha de contratacin y salario. Se desea guardar tambin la fecha en la que se repara cada vehculo y el nmero de horas que se tardado en arreglar cada automvil.Pasar el modelo entidad-relacin resultante al modelo relacional. Disear las tablas en Access, realizar las relaciones oportunas entre tablas e insertar cinco registros en cada una de las tablas. EJERCICIO 16 La liga de ftbol profesional, presidida por Don ngel Mara Villar, ha decidido informatizar sus instalaciones creando una base de datos para guardar la informacin de los partidos que se juegan en la liga.Se desea guardar en primer lugar los datos de los jugadores. De cada jugador se quiere guardar el nombre, fecha de nacimiento y posicin en la que juega (portero, defensa, centrocampista). Cada jugador tiene un cdigo de jugador que lo identifica de manera nica.De cada uno de los equipos de la liga es necesario registrar el nombre del equipo, nombre del estadio en el que juega, el aforo que tiene, el ao de fundacin del equipo y la ciudad de la que es el equipo. Cada equipo tambin tiene un cdigo que lo identifica de manera nica. Un jugador solo puede pertenecer a un nico equipo.De cada partido que los equipos de la liga juegan hay que registrar la fecha en la que se juega el partido, los goles que ha metido el equipo de casa y los goles que ha metido el equipo de fuera. Cada partido tendr un cdigo numrico para identificar el partido.Tambin se quiere llevar un recuento de los goles que hay en cada partido. Se quiere almacenar el minuto en el que se realizar el gol y la descripcin del gol. Un partido tiene varios goles y un jugador puede meter varios goles en un partido.Por ltimo se quiere almacenar, en la base de datos, los datos de los presidentes de los equipos de ftbol (dni, nombre, apellidos, fecha de nacimiento, equipo del que es presidente y ao en el que fue elegido presidente). Un equipo de ftbol tan slo puede tener un presidente, y una persona slo puede ser presidente de un equipo de la liga.Pasar el modelo entidad-relacin resultante al modelo relacional. Disear las tablas en Access, realizar las relaciones oportunas entre tablas e insertar cinco registros en cada una de las tablas. EJERCICIO 17 A partir del siguiente supuesto disear el modelo entidad-relacin.

Se desea informatizar la gestin de un centro de enseanza para llevar el control de los alumnos matriculados y los profesores que imparten clases en ese centro. De cada profesor y cada alumno se desea recoger el nombre, apellidos, direccin, poblacin, dni, fecha de nacimiento, cdigo postal y telfono.Los alumnos se matriculan en una o ms asignaturas, y de ellas se desea almacenar el cdigo de asignatura, nombre y nmero de horas que se imparten a la semana. Un profesor del centro puede impartir varias asignaturas, pero una asignatura slo es impartida por un nico profesor. De cada una de las asignaturas se desea almacenar tambin la nota que saca el alumno y las incidencias que puedan darse con l.Adems, se desea llevar un control de los cursos que se imparten en el centro de enseanza. De cada curso se guardar el cdigo y el nombre. En un curso se imparten varias asignaturas, y una asignatura slo puede ser impartida en un nico curso.Las asignaturas se imparten en diferentes aulas del centro. De cada aula se quiere almacenar el cdigo, piso del centro en el que se encuentra y nmero de pupitres de que dispone. Una asignatura se puede dar en diferentes aulas, y en un aula se pueden impartir varias asignaturas. Se desea llevar un registro de las asignaturas que se imparten en cada aula. Para ello se anotar el mes, da y hora en el que se imparten cada una de las asignaturas en las distintas aulas.La direccin del centro tambin designa a varios profesores como tutores en cada uno de los cursos. Un profesor es tutor tan slo de un curso. Un curso tiene un nico tutor. Se habr de tener en cuenta que puede que haya profesores que no sean tutores de ningn curso.Una vez construido el modelo E-R pasarlo al modelo relacional. Disear las tablas en Access, hacer las relaciones oportunas e insertar 5 registros en cada una de las tablas. EJERCICIO 18 Una empresa necesita organizar la siguiente informacin referente a su organizacin interna.La empresa est organizada en una serie de departamentos. Cada departamento tiene un cdigo, nombre y presupuesto anual. Cada departamento est ubicado en un centro de trabajo. La informacin que se desea guardar del centro de trabajo es el cdigo de centro, nombre, poblacin y direccin del centro.La empresa tiene una serie de empleados. Cada empleado tiene un telfono, fecha de alta en la empresa, NIF y nombre. De cada empleado tambin interesa saber el nmero de hijos que tiene y el salario de cada empleado.A esta empresa tambin le interesa tener guardada informacin sobre los hijos de los empleados. Cada hijo de un empleado tendr un cdigo, nombre y fecha de nacimiento.Se desea mantener tambin informacin sobre las habilidades de los empleados (por ejemplo, mercadotecnia, trato con el cliente, fresador, operador de telefona, etc). Cada habilidad tendr una descripcin y un cdigo.Sobre este supuesto disear el modelo E/R y el modelo relacional teniendo en cuenta los siguientes aspectos. Imagina que una agencia de seguros de tu municipio te ha solicitado una base de datos mediante la cual llevar un control de los accidentes y las multas. Tras una serie de entrevistas, has tomado las siguientes notas:Se desean registrar todas las personas que tienen un vehculo. Es necesario guardar los datos personales de cada persona (nombre, apellidos, direccin, poblacin, telfono y DNI).De cada vehculo se desea almacenar la matrcula, la marca y el modelo. Una persona puede tener varios vehculos, y puede darse el

caso de un vehculo pertenezca a varias personas a la vez.Tambin se desea incorporar la informacin destinada a gestionar los accidentes del municipio. Cada accidente posee un nmero de referencia correlativo segn orden de entrada a la base de datos. Se desea conocer la fecha, lugar y hora en que ha tenido lugar cada accidente. Se debe tener en cuenta que un accidente puede involucrar a varias personas y varios vehculos. Se desea llevar tambin un registro de las multas que se aplican. Cada multa tendr asignado un nmero de referencia correlativo. Adems, deber registrarse la fecha, hora, lugar de infraccin e importe de la misma. Una multa solo se aplicar a un conductor e involucra a un solo vehculo.Realiza el modelo E-R y psalo al modelo relacional. Disea despus las tablas en Access, realiza las relaciones oportunas entre ellas e inserta cinco registros en cada una de las tablas. EJERCICIO 21 Una agencia de viajes desea informatizar toda la gestin de los viajeros que acuden a la agencia y los viajes que estos realizan. Tras ponernos en contacto con la agencia, sta nos proporciona la siguiente informacin.La agencia desea guardar la siguiente informacin de los viajeros: dni, nombre, direccin y telfono.De cada uno de los viajes que maneja la agencia interesa guardar el cdigo de viaje, nmero de plazas, fecha en la que se realiza el viaje y otros datos. Un viajero puede realizar tantos viajes como desee con la agencia. Un viaje determinado slo puede ser cubierto por un viajero.Cada viaje realizado tiene un destino y un lugar de origen. De cada uno de ellos se quiere almacenar el cdigo, nombre y otros datos que puedan ser de inters. Un viaje tiene un nico lugar de destino y un nico lugar de origen. Realizar el modelo E-R y pasarlo al modelo de datos relacional. Disear las tablas en Access, realizar las oportunas relaciones entre tablas e introducir cinco registros en cada una de las tablas.