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!!"); }
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; }
void JJOO::liuSong(const Atleta& a, const Pais p) { Atleta atletaNacionalizado(a.nombre(), a.sexo(), a.anioNacimiento(), p, a.ciaNumber()); int i = 0; while(i<a.deportes().longitud()) { atletaNacionalizado.entrenarNuevoDeporte(a.deportes().iesimo(i), a.capacidad(a.deportes().iesimo(i))); i++; } //Saco el atleta y lo agrego nacionalizado en atletas; _atletas.sacar(a); _atletas.agregarAtras(atletaNacionalizado); i=0; int j = 0; //Lista que va a reemplazar a la vieja lista de listas competencias Lista<Lista<Competencia> > nuevaCompetenciasPorDia; while(i<_competenciasPorDia.longitud()) { //Lista de competencias que va a reemplazar a la anterior en ese dia Lista<Competencia> nuevaCompetenciasEnDia; j = 0; while(j<_competenciasPorDia.iesimo(i).longitud()) { Competencia viejaCompe = _competenciasPorDia.iesimo(i).iesimo(j); //Me fijo si esa competencia tiene al atleta, si no, la dejo como estaba if(viejaCompe.participantes().pertenece(a)) { //Creo la nueva lista de participantes Lista<Atleta> nuevosParticipantes = viejaCompe.participantes(); nuevosParticipantes.sacar(a); nuevosParticipantes.agregarAtras(atletaNacionalizado); // //Guardo la categoria Deporte dep = viejaCompe.categoria().first; Sexo sex = viejaCompe.categoria().second; // //Creo lo que va a ser la nueva competencia con el atleta cambiado // Competencia nuevaCompe(dep, sex, nuevosParticipantes); //Si esta finalizada, asigno el ranking y el doping if(viejaCompe.finalizada()) { int h = 0; Lista<int> ranking; Lista<pair<int, bool> > control; while(h<viejaCompe.ranking().longitud()) { ranking.agregarAtras(viejaCompe.ranking().iesimo(h).ciaNumber()); h++; } h = 0; while(h<viejaCompe.lesTocoControlAntidoping().longitud()) { bool leToco = viejaCompe.leDioPositivo(viejaCompe.lesTocoControlAntidoping().iesimo(h)); int suCiaNumber = viejaCompe.lesTocoControlAntidoping().iesimo(h).ciaNumber(); pair<int, bool> par = make_pair(suCiaNumber, leToco); control.agregarAtras(par); h++; } //Finalizo nuevaCompe.finalizar(ranking, control); } //Agrego a lo que va a ser mi nueva lista de competencias en ese dia nuevaCompetenciasEnDia.agregarAtras(nuevaCompe); } else { nuevaCompetenciasEnDia.agregarAtras(viejaCompe); } j++; } i++; nuevaCompetenciasPorDia.agregarAtras(nuevaCompetenciasEnDia); } _competenciasPorDia = nuevaCompetenciasPorDia; }