Example #1
0
int JJOO::maximaDistanciaEntreJornadas(Lista<int> jornadas) const {
    // Puedo asumir que recibo dos o más jornadas.

    // Guardo acá las distancias calculadas.
    Lista<int> distancias;

    // Calculo todas las distancias entre jornadas.
    int i = 1;
    while (i < jornadas.longitud()){
        distancias.agregarAtras(jornadas.iesimo(i) - jornadas.iesimo(i - 1));
        i++;
    }

    // Busco la máxima distancia.
    int maximaDistancia;
    i = 0;
    while(i < distancias.longitud()) {
        if(i == 0 || distancias.iesimo(i) > maximaDistancia) {
            maximaDistancia = distancias.iesimo(i);
        }
        i++;
    }

    return maximaDistancia;
}
Lista<DNI> Hotel::sacarRepetidos(const Lista<DNI>& dnis) const {
	Lista<DNI> result;
	int i = 0;
	int longitud = dnis.longitud();    
	//Pc: i == 0 $ \land $ longitud == $ |dnis| $ $ \land $ result == []
	//B: i < longitud
	while( i < longitud ){		
		//Fv: longitud - i
		//Cota: 0
		//I: 0$ \leq $i$ \leq $longitud $ \land $ longitud == $ |dnis| $ $ \land $ result == [$ dnis_k $| k$ \selec $[0..i), ($ \lnot $$ \exists $j$ \selec $[0..k)) $ dnis_j $ == $ dnis_k $]
		//Estado e1 
		//Vale B $ \land $ I
		if( !result.pertenece(dnis.iesimo(i)) ){
			result.agregarAtras(dnis.iesimo(i));
		}
		//Qif:(($ dnis_i $ $ \in $ result) $ \land $ (result == result@e1) )$ \lor $( ($ dnis_i $ $ \notin $ result) $ \land $ (result == result@e1 ++ [$ dnis_i $]))
		//estado e2
		//vale Qif $ \land $ i == i@e1
		i++;
		//estado e3
		//vale i == i@e2 + 1 $ \land $ result == result@e2
	}
	//Qc: result == [$ dnis_i $| i$ \selec $[0..longitud), ($ \lnot $$ \exists $j$ \selec $[0..i)) $ dnis_j $ == $ dnis_i $]
	return result;
	//vale result == [$ dnis_i $| i$ \selec $[0..longitud), ($ \lnot $$ \exists $j$ \selec $[0..i)) $ dnis_j $ == $ dnis_i $]
}
Example #3
0
Lista<Atleta> JJOO::losMasFracasados(const Pais p) const {
//Crea una lista con los atletas que ganaron medallas
    int h=0;
    Lista<Atleta> rank;
    while(h<competenciasFinalizadasConOroEnPodio().longitud()){
        if (competenciasFinalizadasConOroEnPodio().iesimo (h).ranking().longitud()<3){
            rank.concatenar(competenciasFinalizadasConOroEnPodio().iesimo(h).ranking());
        }else{
            // 0, 1 y 2 en vez de 1,2,3
            rank.agregar(competenciasFinalizadasConOroEnPodio().iesimo (h).ranking().iesimo(0));
            rank.agregar(competenciasFinalizadasConOroEnPodio().iesimo (h).ranking().iesimo(1));
            rank.agregar(competenciasFinalizadasConOroEnPodio().iesimo (h).ranking().iesimo(2));
        }
        h++;
    }
//Este ciclo me da una lista de atletas del pais p que no ganaron ninguna medalla
    Lista<Atleta> atles;
    int n = 0;
    while (n < atletas().longitud()){
        Atleta competidor = atletas().iesimo(n);
        if ((competidor.nacionalidad()== p) && !rank.pertenece(competidor)) {
            atles.agregar(competidor);
        }
        n++;
    }
//Divido en dos casos, si la lista es vacia o si tiene al menos un elemento
    Lista<Atleta> atlesFracasados;
    if (atles.longitud()==0){
        atlesFracasados=atles;
    }
    else{
//Acá me fijo cual es el atleta que participó en mas competencias
        int k = 0, j=0;
        Atleta maxAp = atles.iesimo(k);
        Lista<Atleta> atlecomp= participantes();
        while (j < atles.longitud()){
            if (atlecomp.cantidadDeApariciones(maxAp)>atlecomp.cantidadDeApariciones(atles.iesimo(j))){
                    maxAp = atles.iesimo(j);
                }
            j++;
        }
//Acá creo la lista con todos los atletas que aparecen tantas veces como maxAp
        atlesFracasados.agregar(maxAp);
        int m=0;
        while (m < atles.longitud()){
            //No estabas viendo si el que tenia la misma cantidad de apariciones era el mismo
            if(   atlecomp.cantidadDeApariciones(maxAp) == atlecomp.cantidadDeApariciones(atles.iesimo(m)) &&
                !(atles.iesimo(m) == maxAp)) {
                atlesFracasados.agregar(atles.iesimo(m));
            }
            m++;
        }
    }
  return atlesFracasados;
}
Example #4
0
Lista<pair<Pais,Lista<int> > > JJOO::ordenarMedallero(const Lista<pair<Pais,Lista<int> > > & medallero) const {

    // Guardo acá mi copia ordenada del medallero.
    Lista<pair<Pais, Lista<int> > > ordenado;

    // Recorro el medallero.
    int i = 0;
    while(i < medallero.longitud()) {

        // Obtengo la tupla país/medallas actual y las medallas (para más legibilidad.)
        pair<Pais, Lista<int> > tuplaActual = medallero.iesimo(i);
        int oros    = tuplaActual.second.iesimo(0);
        int platas  = tuplaActual.second.iesimo(1);
        int bronces = tuplaActual.second.iesimo(2);

        // Guardo acá una copia de las tuplas país/medallas que ya ordené, junto con
        // la tupla país/medallas actual en la posición correcta.
        Lista<pair<Pais, Lista<int> > > nuevoOrdenado;
        bool agregado = false;

        // Recorro las tuplas país/medallas que ya ordené.
        int j = 0;
        while(j < ordenado.longitud()) {
            int orosOtro    = ordenado.iesimo(j).second.iesimo(0);
            int platasOtro  = ordenado.iesimo(j).second.iesimo(1);
            int broncesOtro = ordenado.iesimo(j).second.iesimo(2);

            // Ubico a la tupla país/medallas actual en la posición correcta dentro de la lista ordenada.
            if( !agregado &&
               ((oros >  orosOtro) ||
                (oros == orosOtro && platas >  platasOtro) ||
                (oros == orosOtro && platas == platasOtro && bronces >= broncesOtro))) {
                nuevoOrdenado.agregarAtras(tuplaActual);
                agregado = true;
            }

            // Dejo la tupla que ya había ordenado en la posición que le corresponde.
            nuevoOrdenado.agregarAtras(ordenado.iesimo(j));
            j++;
        }

        // Si luego de recorrer las tuplas país/medallas ya ordenadas resulta que todavía no agregué
        // la tupla país/medallas actual, es porque la tupla actual es la que menos medallas tiene, y
        // por lo tanto su posición es al final de la lista.
        if(!agregado) nuevoOrdenado.agregarAtras(tuplaActual);

        // Finalmente, reemplazo el medallero ordenado actual por mi nuevo medallero ordenado, que
        // incluye a la tupla país/medallas actual.
        ordenado = nuevoOrdenado;

        i++;
    }

    return ordenado;
}
Example #5
0
Lista<int> JJOO::generarRanking(const Competencia& competencia) const {
    // Guardo acá el ranking construído.
    Lista<int> ranking;

    Lista<Atleta> participantesSinRankear = competencia.participantes();

    // Rankeo todos los participantes hasta quedarme sin participantes para rakear.
    while(participantesSinRankear.longitud() > 0) {

        // Busco el participante con menos capacidad entre los que aún no fueron rankeados.
        Atleta peorParticipante;
        int i = 0;
        while(i < participantesSinRankear.longitud()) {
            Deporte deporte = competencia.categoria().first;
            Atleta participante = participantesSinRankear.iesimo(i);

            // En caso de ser el peor hasta el momento, me quedo con el participante i-ésimo.
            if(i == 0 || participante.capacidad(deporte) < peorParticipante.capacidad(deporte)) {
                peorParticipante = participante;
            }

            i++;
        }

        // Agrego el peor participante hallado al principio del ranking.
        ranking.agregar(peorParticipante.ciaNumber());

        // Lo elimino de la lista de participantes sin rankear.
        participantesSinRankear.eliminarPosicion(participantesSinRankear.posicion(peorParticipante));
    }

    return ranking;
}
Example #6
0
void MostrarAtletas(Lista<Atleta> atletas, string titulo)
{
    int tam = atletas.longitud();
    cout << titulo << endl;
    for (int i = 0; i < tam; i++)
    {
        cout << i << " : " << atletas.iesimo(i).nombre() << endl;
    }
}
Example #7
0
bool Competencia::gananLosMasCapaces() const{
    Deporte d = categoria().first;
    Lista<Atleta> rank = ranking();
    int i = 0;
    bool res;

    while (i<_ranking.longitud()){
        if (rank.longitud()<=1){
            res = true;
            i = _ranking.longitud();
        } else {
            if(rank.iesimo(0).capacidad(d) >= rank.iesimo(1).capacidad(d)){
                rank.sacar(rank.iesimo(0));
            } else {
                res = false;
                i = _ranking.longitud();
            }
        }
    }
    return res;
}
Example #8
0
void Cine::cerrarSalasDeLaCadenaC(Lista<Cine> &cs, int e) const{
    int i = 0;
    while (i<cs.longitud())
    {
        Cine csi;
        csi = cs.iesimo(0);
        csi.cerrarSalasC(e);
        cs.agregarAtras(csi);
        cs.eliminarPosicion(0);
        i=i+1;
    }
}
Example #9
0
File: test.cpp Project: chabaug/tpi
void TestTicket()
{
  Ticket a(pelis[0],1,1);
  Ticket b(pelis[1],2,0);
  Ticket c(pelis[2],3,1);
  
  if(!(a.peliculaT()==pelis[0])) fallo=1,cout<<"Falla peliculaT"<<endl;
  if(!(b.peliculaT()==pelis[1])) fallo=1,cout<<"Falla peliculaT"<<endl;
  if(!(c.peliculaT()==pelis[2])) fallo=1,cout<<"Falla peliculaT"<<endl;
  
  if(a.salaT()!=1) fallo=1,cout<<"Falla salaT"<<endl;
  if(b.salaT()!=2) fallo=1,cout<<"Falla salaT"<<endl;
  if(c.salaT()!=3) fallo=1,cout<<"Falla salaT"<<endl;
  
  Lista<Ticket> ts;
  ts.agregarAtras(b);
  ts.agregarAtras(b);
  ts.agregarAtras(b);
  
  if(!a.usadoT()) fallo=1,cout<<"Falla usadoT" << endl;
  if(b.usadoT()) fallo=1,cout<<"Falla usadoT" << endl;
  if(!c.usadoT()) fallo=1,cout<<"Falla usadoT" << endl;
  b.usarT();
  if(!b.usadoT()) fallo=1,cout<<"Falla usarT" << endl;
  
  ts.agregarAtras(b);
  
  Lista<Ticket> ts3;
  ts3 = ts;
  
  ts.agregarAtras(a);
  ts.agregarAtras(c);
  ts.agregarAtras(a);
  ts.agregarAtras(c);
  
  if(!(a.peliculaMenosVistaT(ts)==pelis[1])) fallo=1,cout<<"Falla peliculaMenosVistaT" << endl;
  
  Lista<Ticket> ts2;
  ts2 = ts;
  
  ts = a.cambiarSalaT(ts,2,4);
  for(int i = 0; i < ts.longitud(); i++) {
    if(!((ts2.iesimo(i).salaT() == 2 && ts.iesimo(i).salaT() == 4) || (ts2.iesimo(i).salaT() != 2 && ts.iesimo(i).salaT() == ts2.iesimo(i).salaT()))) fallo = 1, cout << "Falla cambiarSalaT" << endl;
  }
  
  if(a.todosLosTicketsParaLaMismaSalaT(ts)) fallo = 1, cout << " Falla todosLosTicketsParaLaMismaSalaT" << endl;
  if(a.todosLosTicketsParaLaMismaSalaT(ts2)) fallo = 1, cout << " Falla todosLosTicketsParaLaMismaSalaT" << endl;
  if(!a.todosLosTicketsParaLaMismaSalaT(ts3)) fallo = 1, cout << " Falla todosLosTicketsParaLaMismaSalaT" << endl;
  
  ///Ticket ingresarASalaC(Sala s, const Ticket &t);
  ///
  
}
Example #10
0
Lista<pair<Pais, Lista<int> > > JJOO::medallero() const {
    Lista<Pais> paises = this->paises();
    Lista<pair<Pais, Lista<int> > > medallero;

    // Recorro la lista de países.
    int i = 0;
    while(i < paises.longitud()) {
        Pais pais = paises.iesimo(i);
        int oros = 0;
        int platas = 0;
        int bronces = 0;

        // Recorro los rankings de todas las competencias y acumulo las medallas del país actual.
        int j = 0;
        while(j < competencias().longitud()) {
            Lista<Atleta> ranking = competencias().iesimo(j).ranking();
            if(ranking.longitud() > 0 && ranking.iesimo(0).nacionalidad() == pais) oros++;
            if(ranking.longitud() > 1 && ranking.iesimo(1).nacionalidad() == pais) platas++;
            if(ranking.longitud() > 2 && ranking.iesimo(2).nacionalidad() == pais) bronces++;
            j++;
        }

        // Si el país ganó alguna medalla, agrego al medallero la tupla país/medallas.
        if(oros + platas + bronces > 0) {
            Lista<int> medallas;
            medallas.agregarAtras(oros);
            medallas.agregarAtras(platas);
            medallas.agregarAtras(bronces);
            medallero.agregar(make_pair(pais, medallas));
        }

        i++;
    }

    // Devuelvo el medallero ordenado
    return ordenarMedallero(medallero);
}
Example #11
0
Lista<Pais> JJOO::sequiaOlimpica() const {
    Lista<Pais> paises = this->paises();
    
    // Guardo acá una lista de tuplas país/máxima cantidad de días que pasaron sin ganar medallas.
    Lista<pair<Pais,int> > paisDiasSinGanar;

    // Recorro todos los países.
    int i = 0;
    while (i < paises.longitud()) {
        Pais pais = paises.iesimo(i);
        
        // Armo una lista con las jornadas ganadoras de ese país.
        Lista<int> jornadasGanadoras;

        // Agrego un cero al principio de la lista para poder calcular
        // las diferencias entre días (como en la especificación.)
        jornadasGanadoras.agregar(0);
        
        // Recorro las jornadas hasta la actual, excluyéndola.
        int j = 1;
        while (j < jornadaActual()){

            // Si el país ganó alguna medalla en la jornada
            // actual, agrego la jornada a la lista.
            if(ganoMedallasEseDia(pais, j)) {
                jornadasGanadoras.agregarAtras(j);
            }
            j++;
        }
        
        // Agrego la jornada actual al final de la lista, para poder calcular
        // las diferencias entre días (otra vez, como en la especificación.)
        jornadasGanadoras.agregarAtras(jornadaActual());

        // Calculo la máxima diferencia entre días, y agrego
        // la tupla país/diferencia de días a la lista.
        paisDiasSinGanar.agregarAtras(make_pair(pais, maximaDistanciaEntreJornadas(jornadasGanadoras)));

        i++;
    }

    // Busco la máxima cantidad de días que algún país pasó sin ganar medallas.
    int maximosDiasSinGanar;
    i = 0;
    while(i < paisDiasSinGanar.longitud()) {
        if(i == 0 || paisDiasSinGanar.iesimo(i).second > maximosDiasSinGanar) {
            maximosDiasSinGanar = paisDiasSinGanar.iesimo(i).second;
        }
        i++;
    }

    // Me quedo con los países cuya mayor cantidad de días sin ganar medallas
    // es mayor o igual que la del resto de los países.
    Lista<Pais> secos;
    i = 0;
    while (i < paisDiasSinGanar.longitud()) {
        if(paisDiasSinGanar.iesimo(i).second == maximosDiasSinGanar) {
            secos.agregar(paisDiasSinGanar.iesimo(i).first);
        }
        i++;
    }

    return secos;
}
Example #12
0
bool JJOO::uyOrdenadoAsiHayUnPatron() const {

    // Guardo acá la secuencia de mejores países.
    Lista<Pais> mejoresPaises;

    // Recorro los juegos día por día.
    int dia = 1;
    while(dia <= cantDias()) {

        // Guardo acá la cantidad de oros por país.
        Lista<pair<Pais, int> > oros;

        // Recorro el las competencias de este día.
        int i = 0;
        while(i < cronograma(dia).longitud()) {
            Competencia actual = cronograma(dia).iesimo(i);

            // Si la competencia actual está finalizada y alguien se llevó el oro,
            // voy a buscar la nacionalidad del medallista y voy a sumarle un oro a
            // ese país en mi lista de oros por país. En caso contrario, ignoro
            // esta competencia.
            if(actual.finalizada() && actual.ranking().longitud() > 0) {
                Pais pais = actual.ranking().iesimo(0).nacionalidad();

                // Busco el país del medallista en mi lista de oros por país.
                bool encontrado = false;
                int j = 0;
                while(j < oros.longitud() && !encontrado) {

                    // Si encontré el país del medallista en mi lista de oros por país,
                    // aumento en uno la cantidad de oros de ese país.
                    if(oros.iesimo(j).first == pais) {
                        pair<Pais, int> nuevaTupla = make_pair(oros.iesimo(j).first, oros.iesimo(j).second + 1);
                        oros.eliminarPosicion(j);
                        oros.agregarAtras(nuevaTupla);
                        encontrado = true;
                    }

                    j++;
                }

                // Si el país del medallista no estaba en la lista de oros por país,
                // agrego ese país a la lista, con cantidad de oros uno.
                if(!encontrado) {
                    oros.agregarAtras(make_pair(pais, 1));
                }
            }

            i++;
        }

        // Si hubieron oros este día, busco al mejor país y lo agrego a mejoresPaises.
        if(oros.longitud() > 0) {

            // Guardo acá el mejor país hasta el momento (tupla país/oros.)
            pair<Pais, int> mejorPais;

            // Recorro la lista de oros por país.
            i = 0;
            while(i < oros.longitud()) {

                // Si el país i-ésimo es el primero de la lista de oros, o si tiene más oros que el mejor país
                // hasta el momento, o si tiene igual cantidad de oros pero es  lexicográficamente menor,
                // entonces convierto al país i-ésimo en el mejor país hasta el momento.
                if( i == 0 ||
                    oros.iesimo(i).second > mejorPais.second ||
                   (oros.iesimo(i).second == mejorPais.second && oros.iesimo(i).first < mejorPais.first)) {
                    mejorPais = oros.iesimo(i);
                }

                i++;
            }

            // Finalmente, agrego al mejor país del día a la lista de mejores países.
            mejoresPaises.agregarAtras(mejorPais.first);
        }

        dia++;
    }

    bool hayPatron = true;

    // Busco patrón si y sólo si hay tres o más mejores países.
    if(mejoresPaises.longitud() >= 3) {

        // Recorro la lista de mejores países hasta el anteúltimo elemento.
        int i = 0;
        while(i < mejoresPaises.longitud() - 1) {
            Pais actual    = mejoresPaises.iesimo(i);
            Pais siguiente = mejoresPaises.iesimo(i + 1);

            // Recorro todos los países a la derecha del país actual
            int j = i + 1;
            while(j < mejoresPaises.longitud() - 1) {

                // Si el país j-ésimo es el mismo que el actual, verifico que el patrón
                // se cumpla (el elemento siguiente siempre debe ser el mismo.)
                if(mejoresPaises.iesimo(j) == actual) {
                    hayPatron = hayPatron && (mejoresPaises.iesimo(j + 1) == siguiente);
                }

                j++;
            }

            i++;
        }
    }

    return hayPatron;
}
Example #13
0
JJOO MenuCrearJJOO()
{
    int anio;

    Lista<Atleta> atletas = Lista<Atleta>();
    Lista< Lista<Competencia> > cronograma = Lista< Lista<Competencia> >();

    cout << "Ingrese el año del Juego olimpico: " << endl;
    cin >> anio;


    bool otraFecha;
    string eleccion;

    cout << "¿Desea ingresar una fecha al JJOO? [s/n] ";
    cin >> eleccion;
    otraFecha = eleccion == "s";

    while(otraFecha)
    {
        cout << endl;
        cout<< "Ingresando nueva Fecha" << endl;

        Lista<Competencia> nuevaLista = Lista<Competencia>();
        bool otraCompetencia;

        cout << "Desea ingresar una competencia? [s/n] ";
        cin >> eleccion;
        otraCompetencia = eleccion == "s";

        while(otraCompetencia)
        {
            nuevaLista.agregarAtras(MenuCrearCompetencia());
            cout << "Desea ingresar otra competencia? [s/n] ";
            cin >> eleccion;
            cout << endl;
            otraCompetencia = eleccion == "s";
        }
        cronograma.agregarAtras(nuevaLista);

        cout << "¿Desea ingresar otra fecha al JJOO? [s/n] ";
        cin >> eleccion;
        otraFecha = eleccion == "s";
    }
    cout << "¿Desea ingresar todos los participantes de las competencias ingresadas? :" << endl;
    cin >> eleccion;

    if (eleccion == "s")
    {
        for (int i = 0; i < cronograma.longitud(); i++)
        {
            for (int j = 0; j < cronograma.iesimo(i).longitud(); j++)
            {
                for(int k = 0; k < cronograma.iesimo(i).iesimo(j).participantes().longitud(); k++)
                {
                    if (!atletas.pertenece(cronograma.iesimo(i).iesimo(j).participantes().iesimo(k)))
                    {
                        atletas.agregarAtras(cronograma.iesimo(i).iesimo(j).participantes().iesimo(k));
                    }
                }
            }
        }
    }

    bool otroAtleta;
    cout << "Desea ingresar otro atleta? [s/n] " << endl;
    cin >> eleccion;
    otroAtleta = eleccion == "s";

    while(otroAtleta)
    {
        atletas.agregarAtras(MenuCrearAtleta());
        cout << "Desea ingresar otro atleta? [s/n] ";
        cin >> eleccion;
        cout << endl;
        otroAtleta = eleccion == "s";
    }




    return JJOO(anio, atletas, cronograma);
}
Example #14
0
void MenuJJOO()
{
    int maximaOpcion = 2;

    cout << "Creando competencia" << endl
            << "0. Volver al Menu Principal" << endl
            << "1. Crear JJOO" << endl
            << "2. Cargar JJOO" << endl;
    if (jjooCreado)
    {
        maximaOpcion = 19;
        cout << "3. Transcurrir dia" << endl
            << "4. StevenBradbury" << endl
            << "5. LiuSong" << endl
            << "6. Los mas fracasados" << endl
            << "7. Medallero" << endl
            << "8. De paseo" << endl
            << "9. Sequia olimpica" << endl
            << "10. ¿Ordenados asi hay un patron?" << endl
            << "11. Boicot por disciplina" << endl
            << "12. Guardar" << endl
            << "13. Mostrar" << endl
            << "14. Ver anio" << endl
            << "15. Ver Jornada actual" << endl
            << "16. Ver atletas" << endl
            << "17. Cantidad de dias" << endl
            << "18. Atleta Prodigio" << endl
			<< "19. Deportes no olimpicos" << endl;
    }

    int opt = LeerOpcion(maximaOpcion);

    LimpiarPantalla();
    switch(opt)
    {
        case 0:
        {
            LimpiarPantalla();
            break;
        }
        case 1:
        {
            LimpiarPantalla();
            jjoo = MenuCrearJJOO();
            jjooCreado = true;
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 2:
        {
            LimpiarPantalla();
            ifstream archivoEntrada;
            AbrirArchivoParaLeer(archivoEntrada);
            jjoo.cargar(archivoEntrada);
            archivoEntrada.close();
            jjooCreado = true;
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 3:
        {
            LimpiarPantalla();
            cout << "Comenzando a transcurrir dia" << endl;
            jjoo.transcurrirDia();
            cout << "Dia transcurrido" << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 4:
        {
            LimpiarPantalla();
            cout << "Nombre: " << jjoo.stevenBradbury().nombre() <<  "CIA Number: " << jjoo.stevenBradbury().ciaNumber() << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 5:
        {
            int id;
            string pais;
            LimpiarPantalla();
            MostrarAtletas(jjoo.atletas(), "Atletas del Juego Olimpico: ");
            cout << "Indique el atleta y el pais al cual sera nacionalizado :" << endl;
            cin >> id;
            cin >> pais;
            jjoo.liuSong(jjoo.atletas().iesimo(id), pais);
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 6:
        {
            string pais;
            cout << "Indique el pais del cual desea conocer sus atletas mas fracasados: ";
            cin >> pais;
            MostrarAtletas(jjoo.losMasFracasados(pais), "Los mas fracasados: ");
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 7:
        {
            cout << "Medallero olimpico" << endl;
            cout << "Pais" << "     " << "Medallas" << endl;
            for (int i = 0; i < jjoo.medallero().longitud(); i++)
            {
                cout << jjoo.medallero().iesimo(i).first << "       " << jjoo.medallero().iesimo(i).second << endl;
            }
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 8:
        {
            MostrarAtletas(jjoo.dePaseo(), "Atletas de paseo :");
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 9:
        {
            cout << "Sequia olimpica: " << endl;
            for (int i = 0; i < jjoo.sequiaOlimpica().longitud(); i++)
            {
                cout << jjoo.sequiaOlimpica().iesimo(i) << " ";
            }
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 10:
        {
            cout << "¿Hay un patron? " << jjoo.uyOrdenadoAsiHayUnPatron() << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 11:
        {
            string deporte, sexo, pais;
            Sexo sexoFinal;
            cout << "Indique el deporte y sexo de la categoria y el pais que desea boicotear : ";
            cin >> deporte;
            cin >> sexo;
            cin >> pais;

            if (sexo == "f" || sexo == "F" || sexo == "femenino" || sexo == "Femenino")
            {
                sexoFinal = Femenino;
            }
            if (sexo == "m" || sexo == "M" || sexo == "masculino" || sexo == "Masculino")
            {
                sexoFinal = Masculino;
            }
            jjoo.boicotPorDisciplina(pair<Deporte, Sexo>(deporte, sexoFinal), pais);
            cout << "Boicot aplicado" << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 12:
        {
            LimpiarPantalla();
            ofstream archivoSalida;

            AbrirArchivoParaEscribir(archivoSalida);
            jjoo.guardar(archivoSalida);
            archivoSalida.close();

            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 13:
        {
            LimpiarPantalla();
            jjoo.mostrar(cout);
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 14:
        {
            cout << "Anio: " << jjoo.anio() << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 15:
        {
            cout << "Jornada actual: " << jjoo.jornadaActual() << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 16:
        {
            MostrarAtletas(jjoo.atletas(), "Atletas del Juego olimpico: ");
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 17:
        {
            cout << "Cantidad de dias: " << jjoo.cantDias() << endl;
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
        case 18:
        {
            cout << "El Atleta prodigio es: " << endl;
            atletaProdigio(jjoo).mostrar(cout);
            Pausar();
            LimpiarPantalla();
            MenuJJOO();
            break;
        }
		case 19:
		{
			cout << "Deportes no olimpicos" << endl;
			Lista<Deporte> deportes = jjoo.deportesNoOlimpicos();
			cout << "[ ";
			for(int i = 0; i < deportes.longitud(); i++)
			{
				cout << deportes.iesimo(i) << " ";
			}
			cout << "]";
		}
    }
}