Está en la página 1de 4

Estructuras de Datos I

Prctica 2
Memora dinmica.
TADs lineales dinmicos
Versin 2.
Estructuras de Datos I

Introduccin

Con esta prctica se pretende afianzar los conceptos relativos al uso de memoria dinmica y
de los TADs lineales, apoyados en memoria dinmica.

Se le ir facilitando distintas versiones del enunciado, conforme los avances en teora y en el


propio desarrollo de la prctica le permita ir avanzando.

Esta prctica se basa en que, para el desarrollo de las futuras olimpiadas, nos han solicitado que
desarrollemos una aplicacin que conste de:

- Gestin de la lista de pases en el medallero (que hayan obtenido medallas), donde


para cada uno de ellos dispondremos de una cola de prioridad de los medallistas de
dicho pas (la cola de prioridad se basa en el criterio de tener a los medallistas
ordenados en base a su medalla obtenida).

A modo de ejemplo, supongamos que el medallero en un momento dado lo tenemos como


sigue:

EEUU
Prueba: Baloncesto M Prueba: Voleibol M Prueba: 100m lisos M.
Participante: Equipo Participante: Equipo Participante: J. Gatlin
Medalla: Oro Medalla: Oro Medalla: Plata

ESPAA
Prueba: Badminton Prueba: Baloncesto F Prueba: Baloncesto M
Participante: Carolina Marin Participante: Equipo Participante: Equipo
Medalla: Oro Medalla: Plata Medalla: Bronce

SERBIA
Prueba: Baloncesto M Prueba: Baloncesto F
Participante: Equipo Participante: Equipo
Medalla: Plata Medalla: Bronce

Nos apoyaremos para implementar la aplicacin en las siguientes definiciones:


typedef char cadena[50];

struct Tmedallista{
cadena prueba;
cadena participante;
int medalla; /*1 oro, 2 plata, 3 bronce*/
};

class lista {

Dpto. Tecnologas de la Informacin 2


Estructuras de Datos I

/* lista de elementos tipo Tmedallista basada en una


implementacin con tablas dinmicas */
};

class colaprioridad
{
lista elementos;
public:
colaprioridad();
~colaprioridad();
void encolar(Tmedallista e);
void desencolar();
Tmedallista primero();
int longitud();
bool esvacia();
}

struct Tpais {
cadena nombre;
colaprioridad medallas;
}; //estructura para almacenar la informacin completa de un
//pas (tanto su nombre como su cola de prioridad de medallas

class listapaises
{
/*lista simplemente enlazada de elementos de tipo Tpais,
basada en una implementacin con estructuras enlazadas */
};

class olimpiadas {
listapaises P;
public:
olimpiadas();
~olimpiadas();
void insertarMedalla(cadena pais,Tmedallista m);
void listarmedallero();
void volcarAfichero(cadena nom);
void leerDefichero(cadena nom);

};

La clase colaprioridad permite tener ordenados en base al tipo de medalla, a los


medallistas incluidos en dicha cola. Los mtodos de la clase son anlogos a los de una cola,
pero teniendo presente esa prioridad. Obsrvese que se ha establecido como implementacin
de la cola de prioridad aquella en la que internamente se apoya en una simple lista, donde los
elementos estarn ordenados en base a la prioridad (tipo de metal o medalla en este caso).

La clase lista es anloga a la vista en clase y recogida en los apuntes, pero donde debe
hacer las adaptaciones oportunas en base al tipo base de la lista. Adems, para ver si un
medallista est en la lista o no, se entender que debemos buscar por el nombre de la prueba y
del participante conjuntamente.

La estructura Tpais estructura para almacenar la informacin completa de un pas


(tanto su nombre como su cola de prioridad de medallas

Dpto. Tecnologas de la Informacin 3


Estructuras de Datos I

La clase olimpiadas es la estructura principal de la que cuelga toda la informacin de


la prctica (contiene la lista de pases).

Se le pide desarrollar los mtodos de las clase olimpiadas y usarlos en un main que debe realizar para
poner en prctica los mtodos desarrollados. El detalle de los mtodos, que requieren explicacin, la
mostramos a continuacin:

insertarMedalla
Este mtodo recibe el nombre de un pas y la estructura Tmedallista (campos prueba,
participante y medalla). Lo que hace el mtodo es insertar la medalla en la estructura de la
olimpiada. Si el pas existe aade la medalla, si no existiera, lo crea.

volcarAfichero
Este mtodo se encarga de volcar el contenido de la olimpiada al fichero de nombre fsico que
se nos pase como parmetro. El fichero que se crea tiene la siguiente estructura:

Pais NMedallistas Medallista1 Medallista2 Medallistan Pais NMedallistas


Siendo Medallista1 a Medallistan de tipo Tmedallista

Listarmedallero
Muestra por pantalla el medallero completo de las olimpiadas en la forma
Pais: XXXX1
Prueba PPPPP1 Participante TTTTTTT1 Medalla MMM (siendo MMM oro, plata o
bronce)
Prueba PPPPP2 Participante TTTTTTT2 Medalla MMM (siendo MMM oro, plata o
bronce)
.
Pas: XXXX2
Prueba PPPPPH Participante TTTTTTTI Medalla MMM (siendo MMM oro, plata o
bronce)
Prueba PPPPPJ Participante TTTTTTTU Medalla MMM (siendo MMM oro, plata o
bronce)
.

leerDefichero
Mtodo que recibiendo el nombre de un fichero procede a cargar el contenido de las olimpiadas con
los datos contenidos en dicho fichero. ste fichero responde al patrn o tipo de fichero que se crea en
el volcarAfichero.

Para ayudarles en el desarrollo de la prctica, se les facilita un fichero de datos (olim.dat), que tiene
internamente la estructura antes mencionada, por si desea usarlo para las pruebas. Su contenido es:

PAIS:Espaa
PRUEBA: Baloncesto PARTIPANTE: Equipo MEDALLA: Bronce
PRUEBA: Badminton PARTIPANTE: Carolina Marin MEDALLA: Oro
PAIS:EEUU
PRUEBA: Baloncesto PARTIPANTE: Equipo MEDALLA: Oro
PAIS:Serbia
PRUEBA: Baloncesto PARTIPANTE: Equipo MEDALLA: Plata

Dpto. Tecnologas de la Informacin 4

También podría gustarte