예제 #1
0
void Competencia::guardar(std::ostream& os) const{
    os << (char) ENCABEZADO_ARCHIVO << " (|" << categoria().first << "|, |"
    << ((categoria().second == Masculino)? "Masculino" : "Femenino") << "|) |"
    << ( finalizada()? "True" : "False") << "| ";

    os << "[" ;

    int i;
    if( participantes().longitud() != 0 ){
        i=0;
        while(i<participantes().longitud()){
            os << "(";

            participantes().iesimo(i).guardar(os);
            i++;

            if(i == participantes().longitud()){
                os << ")] ";
            }else{
                os << "), ";
            }
        }

    }else{
        os << "]";
    }

    if( finalizada() ){
        os << "[" ;
        i=0;
        while( i< _ranking.longitud()){
            os << _ranking.iesimo(i);
            i++;

            if(i != _ranking.longitud()){
                os << ", ";
            }
        }
        os << "] ";

        os << "[" ;
        i=0;
        while( i<_controlAntidoping.longitud()){

            os << "(" << _controlAntidoping.iesimo(i).first << ", "
            << ((_controlAntidoping.iesimo(i).second )? "|True|" : "|False|") << ")";

            i++;

            if(i != _controlAntidoping.longitud()){
                os << ", ";
            }

        }
        os << "] ";

    }else {
        os << "[] []";
    }
}
예제 #2
0
void Competencia::sancionarTramposos(){
    int atletaIndex = 0;
    while( atletaIndex < participantes().longitud() ){
        if( ranking().pertenece(participantes().iesimo(atletaIndex))
           && leDioPositivo(participantes().iesimo(atletaIndex)) ){
            _ranking.sacar( participantes().iesimo(atletaIndex).ciaNumber() );
        }
        atletaIndex++;
    }
}
예제 #3
0
void Competencia::mostrar(std::ostream& os) const{
    if(finalizada()){
        os << endl << "Categoria: (" << categoria().first << " , "
        << (categoria().second == Masculino? "Masculino":"Femenino" ) << " )" << endl
        << "Finalizada: True" << endl << "Participantes: " << participantes()
        << endl <<"Ranking: " << _ranking << " Control Antidoping: ";
        printControl(os);
    } else {
        os << endl << "Categoria: (" << categoria().first << " , "
         << (categoria().second == Masculino? "Masculino":"Femenino") << " )" << endl
        << "Finalizada: False" << endl << "Participantes: " << participantes();
    }
}
예제 #4
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;
}
예제 #5
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;
}
예제 #6
0
bool Competencia::operator==(const Competencia& c) const{

    bool result = mismasAtletas(c.participantes() , participantes())
    	&& c.categoria() == categoria() && c.finalizada() == finalizada();

    if(result && finalizada()){
        result = c.ranking() == ranking()
        	&& mismasAtletas(c.lesTocoControlAntidoping(),lesTocoControlAntidoping());
        if(result){
            int i = 0;
            while( i < c.lesTocoControlAntidoping().longitud() && result){
                result = result && c.leDioPositivo(c.lesTocoControlAntidoping().iesimo(i))
                		== leDioPositivo(c.lesTocoControlAntidoping().iesimo(i));
                i++;
            }
        }
    }
    return result;
}