Exemplo n.º 1
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.º 2
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;
}
Exemplo n.º 3
0
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;
}