Exemplo n.º 1
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;
}
Exemplo n.º 2
0
int main()
{
    Lista l;

    l.agregar(new Perro(5,"hola"));
    l.agregar(new Perro(5,"adios"));
    l.agregar(new Perro(8,"valemadre"));
    l.insertar(new Lora(4,"blu"),9);

    cout<<l.buscar("adios")->edad<<endl;

    return 0;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
0
int main()
{
    Lista<string> l;
    l.agregar("Hola");
    l.agregar("Mundo");
    l.agregar("Ejemplo");
    l.imprimir();

    Lista<int> l2;
    l2.agregar(5);
    l2.agregar(21);
    l2.agregar(2);
    l2.imprimir();

    return 0;
}
Exemplo n.º 5
0
Lista<Pelicula> Cine::peliculasC() const {
	Lista<std::pair<Pelicula,Sala> > ps=peliculas_;
	Lista<Pelicula> res;
	int i=0;
	while (i<ps.longitud()) {
        res.agregar((ps.iesimo(i)).first);
        i++;
	} return res;
}
Exemplo n.º 6
0
Lista<pair<int,bool> > JJOO::generarAntidoping(const Competencia& competencia) const {
    Lista<pair<int,bool> > antidoping;

    // Tomo al primer participante y lo agrego al control, con resultado falso.
    if(competencia.participantes().longitud() > 0) {
        antidoping.agregar(make_pair(competencia.participantes().cabeza().ciaNumber(), false));
    }

    return antidoping;
}
Exemplo n.º 7
0
Lista<Atleta> Competencia::lesTocoControlAntidoping() const{
    int largo = _controlAntidoping.longitud();
    int i = 0;
    Lista<Atleta> atletas = Lista<Atleta> ();
    while(i<largo){
        atletas.agregar(findAtletaByCiaNumber(_controlAntidoping.iesimo(i).first));
        i++;
    }
    return atletas;
}
Exemplo n.º 8
0
Lista<Atleta> JJOO::dePaseo() const {
    Lista<Atleta> result;
    int i = 0;
    while (i < _atletas.longitud()) {
        if (!participantes().pertenece(_atletas.iesimo(i))) {
            result.agregar(_atletas.iesimo(i));
        }
        i++;
    }
    return result;
}
Exemplo n.º 9
0
Lista<Competencia> JJOO::competenciasFinalizadasConOroEnPodio() const {
    Lista<Competencia> result;
    int i = 0;
    while (i < competencias().longitud())   {
        Competencia actual = competencias().iesimo(i);
        if (actual.finalizada() && actual.ranking().longitud() > 0) {
            result.agregar(actual);
        }
        i++;
    }
    return result;
}
Exemplo n.º 10
0
Lista<Pais> JJOO::paises() const {
    Lista<Pais> paises;
    int i = 0;
    while(i < _atletas.longitud()) {
        Pais actual = _atletas.iesimo(i).nacionalidad();
        if(!paises.pertenece(actual)) {
            paises.agregar(actual);
        }
        i++;
    }
    return paises;
}
Exemplo n.º 11
0
int main(int argc, char const *argv[])
{
	Lista *l;
	l = new Lista();
	Nodo *a = new Nodo(1);
	l->agregarInicio(a);
	l->agregarFinal(new Nodo(3));
	l->agregarFinal(new Nodo(4));
	l->agregar(new Nodo(2), 2);
	l->agregar(new Nodo(7), 3);
	l->imprimir();
	return 0;
}
Exemplo n.º 12
0
void grafica::calcular_ruta_corta(int a , int b){
	caja1 *p;
	caja2 *q,*limite;
	caja3 *r;
	existe_ruta=false;
	principio.agregar(a);
	q=principio.get_lugar_agregado();
	while(q){
		q->bandera=2;
		printf("\nerror1!!");
		if(q->num_nodo==b){
			existe_ruta=true;
		}
		(q->salientes).iniciar_recorrido();
		p=(q->salientes).recorrer();
		printf("\nerror2!!");
		while(p&&existe_ruta==false){
				printf("\nerror3.1!!");
				printf("\ndireccion = %p",p->direccion);
			if((p->direccion)->bandera==0){
					printf("\nerror3.1.1!!");
				(p->direccion)->bandera=1;
					printf("\nerror3.1.1.1!!");
				//	printf("\nmi direccion es : %p y mi longitud tot : %f",p->direccion,q->ruta_corta+p->longitud);
				A.agregar(p->direccion,q->ruta_corta+p->longitud);
					printf("\nerror3.1.2!!");
				r=A.get_lugar_agregado();
				(p->direccion)->antecesor=q; 
			    (p->direccion)->ruta_corta=q->ruta_corta+p->longitud;
			    	printf("\nerror3.2!!");
			}else if((p->direccion)->bandera==1&&(q->ruta_corta+p->longitud)<(p->direccion)->ruta_corta){
				(p->direccion)->antecesor=q; 
			    (p->direccion)->ruta_corta=q->ruta_corta+p->longitud;
				A.ajustar((p->direccion)->lugar,q->ruta_corta+p->longitud);
					printf("\nerror3.3!!");
			}
				printf("\nerror3.4!!");
			p=(q->salientes).recorrer();
			printf("\nerror3.5!!");
		}
		q=A.sacar();
		printf("\nerror4!!");
		if(q){
			limite=q;
		}
		printf("\nerror5!!");
	}
	printf("\nEl proceso de encontrar la ruta mas corta ha terminado :)");
	pintar_ruta(limite,a,b);
	printf("\nerror6!!");
}
Exemplo n.º 13
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);
}
Exemplo n.º 14
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;
}
Exemplo n.º 15
0
void MenuCompetencia()
{
    int maximaOpcion = 2;

    cout << "Creando competencia" << endl
            << "0. Volver al Menu Principal" << endl
            << "1. Crear competencia" << endl
            << "2. Cargar competencia" << endl;
    if (competenciaCreada)
    {
        maximaOpcion = 15;
        cout << "3. Finalizar competencia" << endl
            << "4. LinfordChristie" << endl
            << "5. ¿Ganan los mas capaces?" << endl
            << "6. Sancionar Tramposos" << endl
            << "7. ¿Le Dio positivo?" << endl
            << "8. Ranking" << endl
            << "9. Atletas que les toco control" << endl
            << "10. ¿Finalizada?" << endl
            << "11. Guardar" << endl
            << "12. Mostrar" << endl
            << "13. Participantes" << endl
            << "14. Categoria" << endl
			<< "15. Clasifico tarde" << endl;
    }

    int opt = LeerOpcion(maximaOpcion);

    LimpiarPantalla();
    switch(opt)
    {
        case 0:
        {
                LimpiarPantalla();
                break;
        }
        case 1:
        {
                LimpiarPantalla();
                competencia = MenuCrearCompetencia();
                competenciaCreada = true;
                LimpiarPantalla();
                MenuCompetencia();
                break;
        }
        case 2:
        {
            LimpiarPantalla();
            ifstream archivoEntrada;
            AbrirArchivoParaLeer(archivoEntrada);
            competencia.cargar(archivoEntrada);
            archivoEntrada.close();
            competenciaCreada = true;
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 3:
        {
            int id;
            string doping;

            Lista<int> posiciones = Lista<int>();
            Lista< pair<int, bool> > resultados = Lista< pair<int, bool> >();

            MostrarAtletas(competencia.participantes(), "Lista de participantes :");

            cout << competencia.participantes() << endl;

            cout << "Ingrese la lista de atletas segun id de la lista, seguido del resultado de doping del mismo."<< endl;

            for (int i = 0; i < competencia.participantes().longitud(); i++)
            {
                cout << "Puesto numero " << i+1 << " : ";
                cin >> id;
                cin >> doping;
                posiciones.agregarAtras(competencia.participantes().iesimo(id).ciaNumber());
                resultados.agregar(pair<int, bool>(competencia.participantes().iesimo(id).ciaNumber(), doping == "s"));
            }

            competencia.finalizar(posiciones, resultados);
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 4:
        {
            int id;
            string nombre;
            LimpiarPantalla();
            MostrarAtletas(competencia.participantes(), "Lista de participantes :");
            cout << "Indique que atleta desea descalificar : " << endl;
            cin >> id;
            nombre = competencia.participantes().iesimo(id).nombre();
            competencia.linfordChristie(competencia.participantes().iesimo(id).ciaNumber());
            cout << "El atleta " << nombre <<" fue descalificado";
            Pausar();
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 5:
        {
            LimpiarPantalla();
            cout << "¿Ganan los más capaces? " << competencia.gananLosMasCapaces() << endl;
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 6:
        {
            cout << "Sancionando tramposos" << endl;
            competencia.sancionarTramposos();
            cout << "Tramposos sancionados" << endl;
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 7:
        {
            int id;
            MostrarAtletas(competencia.participantes(), "Lista de participantes :");
            cout << "Indique el id de atleta del que desea saber su resultado de doping :";
            cin >> id;
            cout << "Su resultado fue: " << competencia.leDioPositivo(competencia.participantes().iesimo(id)) << endl;
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 8:
        {
            MostrarAtletas(competencia.ranking(), "Ranking de la competencia :");
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 9:
        {
            MostrarAtletas(competencia.lesTocoControlAntidoping(), "Atletas a los que le toco control antidoping :");
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 10:
        {
            cout << "¿Está finalizada la competencia? " << competencia.finalizada() << endl;
            Pausar();
            LimpiarPantalla();
            break;
        }
        case 11:
        {
            LimpiarPantalla();
            ofstream archivoSalida;

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

            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 12:
        {
            LimpiarPantalla();
            competencia.mostrar(cout);
            Pausar();
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 13:
        {
            MostrarAtletas(competencia.participantes(), "Participantes de la competencia: ");
            Pausar();
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
        case 14:
        {
            cout << "Categoria: " << "[ Deporte: " << competencia.categoria().first << "| Sexo: " << competencia.categoria().second << "]" << endl;
            Pausar();
            LimpiarPantalla();
            MenuCompetencia();
            break;
        }
		case 15:
		{
			cout << "Ingresando nuevo participante" << endl;
			Atleta nuevoAtleta = MenuCrearAtleta();
			competencia.clasificoTarde(nuevoAtleta);
			LimpiarPantalla();
			MenuCompetencia();
			break;
		}
    }
}