Sie sind auf Seite 1von 6

PROGRAMACIÓN 2

Práctica Evaluable
1ºB Curso 2014/2015
Departamento de Lenguajes
y Ciencias de la Computación

La emisora de radio RockFM nos ha solicitado que desarrollemos una aplicación para la gestión de grupos y
canciones que emiten en su emisora, así como para la programación de la misma basada en “trios” que son
grupos de 3 canciones. Para ello debemos desarrollar las clases CGrupo, CLista y CRockFM cuya definición
se muestra a continuación. También se ofrece un programa principal y un fichero de texto para poder probar
la aplicación. El programa suministrado principal es el siguiente:
#include "CGrupo.hpp"
#include "CRockFM.hpp"

using namespace RockFM;

int main()
{
bool ok;
CRockFM rfm;
TCancionPinchar cancion;
TTrio miTrio;
CGrupo maiden("IRON MAIDEN",1975);
CGrupo megadeth("MEGADETH", 1983);
TAlbum a1;
TAlbum a2;

a1.anho=1992;
a1.nombre="Fear of the Dark";
a1.canciones.push_back("Afraid to Shoot Stranger");
maiden.InsertarAlbum(a1);

a2.anho=1992;
a2.nombre="Countdown to Extinction";
a2.canciones.push_back("Symphony of Destruction");
megadeth.InsertarAlbum(a2);

rfm.CargarGruposDesdeFichero("grupos.txt");

rfm.InsertarGrupo(maiden,ok);
if (ok)
{
cout << "Grupo Insertado:" << endl;
cout << maiden << endl;
}

rfm.InsertarGrupo(megadeth,ok);
if (ok)
{
cout << "Grupo Insertado:" << endl;
cout << megadeth << endl;
}

miTrio.canciones[0].nombre_grupo="METALLICA";
miTrio.canciones[0].nombre_album="...And Justice for All";
miTrio.canciones[0].nombre_cancion="One";

miTrio.canciones[1].nombre_grupo="IRON MAIDEN";
miTrio.canciones[1].nombre_album="Fear of the Dark";
miTrio.canciones[1].nombre_cancion="Afraid to Shoot Stranger";

miTrio.canciones[2].nombre_grupo="MEGADETH";
miTrio.canciones[2].nombre_album="Countdown to Extinction";
miTrio.canciones[2].nombre_cancion="Symphony of Destruction";

rfm.InsertarTrio(miTrio,ok);
if (ok) cout << "Trio Insertado." << endl;
else cout << "Trio NO Insertado." << endl;

rfm.MostrarGrupo("METALLICA");

rfm.MostrarProgramacion();

return 0;

}
Las clases a implementar deberán estar en el espacio de nombres RockFM y son:

Clase CGrupo
 Define las constante char ENTER = '\n' y char SEPARADOR = ';'
 Define los registros
struct TAlbum struct TMiembro
{ {
string nombre; string nombre;
int anho; string actividad;
vector<string> canciones; };
};
 Define los siguientes atributos privados
o string Nombre;
o int anho_fundacion;
o vector<TMiembro> Miembros;
o vector<TAlbum> Albumnes;
 Define los siguientes métodos públicos
o ~CGrupo(): Destructor
o CGrupo(): Crea un grupo cuyo año de fundación es 0 y todos sus campos están
vacíos.
o CGrupo(string nombre, int anho): Crea un grupo con el nombre y año
suministrado, sin miembros y sin álbumnes.
o CGrupo(const CGrupo &otro): Constructor de copia
o CGrupo & operator= (const CGrupo & otro): Asignación
o string getNombre() const: Obtiene el nombre del grupo
o void setNombre(string n): Establece el nombre del grupo
o int getAnhoFundacion() const: Obtiene el año de fundación del grupo
o void setAnhoFundacion(int a): Establece el año de fundación del grupo
o string toString() const: Obtiene la cadena que representa al Grupo que
tiene el format de Nombre(año)
o void InsertarMiembro(TMiembro m): Inserta un miembro en el grupo.
o void EliminarMiembro(string nombre): Elimina un miembro del grupo.
o vector<TMiembro> getMiembros(): Devuelve los miembros del grupo.
o void InsertarAlbum(TAlbum a): Inserta un album en el grupo.
o void EliminarAlbum(string nombre) : Elimina un album del grupo.
o vector<TAlbum> getAlbumnes(): Devuelve la discografía del grupo.
o friend istream & operator>>(istream &in, CGrupo &g): Lee un grupo desde un
flujo de entrada.
o friend ostream & operator<<(ostream &out, const CGrupo &g): Escribe un
grupo en un flujo de salida.
 Formato de entrad/salida
<Nombre del grupo>
<Año Fundación>
<Número de Miembros>
<nombre miembro 1>;<actividad miembro 1>
...
<nombre miembro n>;<actividad miembro n>
<Número de Álbumnes>
<nombre album 1>
<año album 1>
<número canciones album 1>
<canción 1 album 1>
...
<canción n album 1>
...
<nombre album n>
<año album n>
<número canciones album n>
<canción 1 album n>
...
<canción n album n>
Clase CRockFM
 Define la constante unsigned int MAX_C = 3
 Define los registros
struct TCancionPinchar struct TTrio
{ {
string nombre_grupo; TCancionPinchar canciones[MAX_C];
string nombre_album; };
string nombre_cancion;
};
 Define los siguientes atributos privados
o CLista<CGrupo> grupos;
o CLista<TTrio> programacion;
 Define los siguientes métodos públicos
o CRockFM(): Construye un objeto con las listas de grupos y de Programación
vacías.
o ~CRockFM(): Destructor.
o void CargarGruposDesdeFichero(string nomFich): Carga los grupos que se
encuentren en el fichero cuyo nombre se le pasa como parámetro. El formato
de lectura será el establecido en la clase CGrupo.
o void SalvarGruposAFichero(string nomFich): Salvar los grupos que se
encuentren en la estructura en un fichero cuyo nombre se le pasa como
parámetro. El formato de escritura será el establecido en la clase CGrupo.
o void InsertarGrupo(const CGrupo &g, bool &ok): Inserta un grupo en la lista
de grupos. Si hay algún error ok valdrá false y si no valdrá true.
o void BorrarGrupo(const CGrupo &g, bool &ok) : Borra un grupo de la lista de
grupos. Si hay algún error ok valdrá false y si no valdrá true.
o void InsertarTrio(const TTrio &t, bool &ok) : Inserta un trío en la lista
de tríos de la programación. El trío se insertará y ok valdrá true, si
existe en la lista de grupos un grupo con el nombre especificado, que tenga
el álbum especificado y que la canción especificada esté en dicho álbum y
si no valdrá false.
o void MostrarProgramacion(): Muestra por pantalla todos los tríos
programados.
o void MostrarGrupo(string nombre): Muestra el grupo cuyo nombre se
especifica por pantalla. En caso de no tener almacenado un grupo con dicho
nombre mostrará el mensaje "No encontrado"

Clase CLista
#ifndef _TLISTA_HPP_
#define _TLISTA_HPP_

#include <iostream>
#include <cstdlib>

using namespace std;

namespace MLISTA
{
template <typename T>
class CLista
{
public:
CLista()
{
//Implementar
}

~CLista()
{
//Implementar
}

bool estaVacia() const


{
//Implementar
}

unsigned int obtenerLongitud() const


{
//Implementar
}

void insertar(unsigned int indice, const T &nuevoElemento, bool &exito)


{
//Implementar
}

void reemplazar(unsigned int indice, const T &nuevoElemento, bool &exito)


{
//Implementar

}
void eliminar(unsigned int indice, bool &exito)
{
//Implementar
}

void consultar(unsigned int indice, T &elemento, bool &exito) const


{
//Implementar
}

private:
// Atributos
struct TNodo
{
T elemento;
TNodo *sig;
};
typedef TNodo *TpLista;

TpLista lista;
int longitud;

};
}

#endif

Ejemplo de Ejecución
Grupo Insertado:
IRON MAIDEN
1975
0
1
Fear of the Dark
1992
1
Afraid to Shoot Stranger

Grupo Insertado:
MEGADETH
1983
0
1
Countdown to Extinction
1992
1
Symphony of Destruction

Trio Insertado.
Grupo: METALLICA
METALLICA
1981
4
James Hetfield;Voz, guitarra rÝtmica
Kirk Hammett;Guitarra solista
Robert Trujillo;Bajo
Lars Ulrich;BaterÝa
9
Kill 'Em All
1983
10
Hit the Lights
The Four Horsemen
Motorbreath
Jump in the Fire
(Anesthesia) Pulling Teeth
Whiplash
Phantom Lord
No Remorse
Seek and Destroy
Metal Militia
Ride the Lightning
1984
8
Fight Fire with Fire
Ride the Lightning
For Whom the Bell Tolls
Fade to Black
Trapped Under Ice
Escape
Creeping Death
The Call of Ktulu
Master of Puppets
1986
8
Battery
Master of Puppets
The Thing That Should Not Be
Welcome Home (Sanitarium)
Disposable Heroes
Leper Messiah
Orion
Damage, Inc.
...And Justice for All
1988
9
Blackened
...And Justice for All
Eye of the Beholder
One
The Shortest Straw
Harvester of Sorrow
The Frayed Ends of Sanity
To Live Is to Die
Dyers Eve
Metallica
1991
12
Enter Sandman
Sad but True
Holier Than Thou
The Unforgiven
Wherever I May Roam
Don't Tread on Me
Through the Never
Nothing Else Matters
Of Wolf and Man
The God That Failed
My Friend of Misery
The Struggle Within
Load
1996
14
Ain't My Bitch
2 x 4
The House Jack Built
Until It Sleeps
King Nothing
Hero of the Day
Bleeding Me
Cure
Poor Twisted Me
Wasting My Hate
Mama Said
Thorn Within
Ronnie
The Outlaw Torn
ReLoad
1997
13
Fuel
The Memory Remains
Devil's Dance
The Unforgiven II
Better than You
Slither
Carpe Diem Baby
Bad Seed
Where The Wild Things Are
Prince Charming
Low Man's Lyric
Attitude
Fixxxer
St. Anger
2003
11
Frantic
St. Anger
Some Kind of Monster
Dirty Window
Invisible Kid
My World
Shoot Me Again
Sweet Amber
The Unnamed Feeling
Purify
All Within My Hands
Death Magnetic
2008
10
That Was Just Your Life
The End Of The Line
Broken, Beat & Scarred
The Day That Never Comes
All Nightmare Long
Cyanide
The Unforgiven III
The Judas Kiss
Suicide & Redemption
My Apocalypse

Programación de Hoy
===================
Trio 1
Grupo : METALLICA
Album : ...And Justice for All
Canción: One

Grupo : IRON MAIDEN


Album : Fear of the Dark
Canción: Afraid to Shoot Stranger

Grupo : MEGADETH
Album : Countdown to Extinction
Canción: Symphony of Destruction

Das könnte Ihnen auch gefallen