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 << "[] []"; } }
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++; } }
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(); } }
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; }
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; }
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; }