
Algoritmos en dev c++
Publicado por fernando (1 intervención) el 14/10/2013 19:38:13
por favor es urgente necesito que me colaboren con estos dos ejercicios !! si deseas colaborarme contactate con migo.. gracias!!
Valora esta pregunta


0
int distanciaTotal = 0;
bool hayRuta = false;
void ruta(struct Vertice * origen, string destino, string transporte, int distancia){
comparaciones++;
lineasEjecutadas++;
if(origen == NULL)
return;
lineasEjecutadas++;
comparaciones++;
if(origen->visitado == true)
return;
lineasEjecutadas+=2;
comparaciones++;
push(origen->nombre);
if(origen->nombre == destino){
hayRuta = true;
rutaString = "";
imprimir(pila);
struct Rutas *nn = new Rutas(rutaString);
nn->sigRutas = primeroRutas;
primeroRutas = nn;
cout<<endl;
asignaciones+=4;
lineasEjecutadas+=8;
return;
}
else{
asignaciones+=2;
origen->visitado = true; /// Lo voy a visitar
struct Arco * tempArco = origen->sigArco;
comparaciones++;
lineasEjecutadas+=4;
while(tempArco!=NULL){
comparaciones+=2;
lineasEjecutadas++;
if((tempArco->tipoTransporte == transporte)&&(tempArco->distancia + distanciaTotal <= distancia)){
distanciaTotal = distanciaTotal + tempArco->distancia;
ruta(buscarVertice(tempArco->destino),destino,transporte,distancia);
tempArco = tempArco->sigArco;
asignaciones+=2;
lineasEjecutadas+=5;
if(pila->sig!=NULL)
pop(); /// Se coloca aqui porque ya aqui esta en un nuevo camino o ruta
}
else{
asignaciones++;
tempArco = tempArco->sigArco;
lineasEjecutadas+=2;
}
}
asignaciones++;
origen->visitado = false;
lineasEjecutadas+=2;
}
}
void Probabilistico(){
comparaciones++;
lineasEjecutadas++;
if(primeroRutas == NULL){
cout<<endl<<"No hay rutas!"<<endl;
}
else{
asignaciones+=2;
int conta = 0;
struct Rutas *tempRuta = primeroRutas;
comparaciones++;
lineasEjecutadas+=4;
while(tempRuta != NULL){
conta++;
tempRuta = tempRuta->sigRutas;
asignaciones++;
lineasEjecutadas+=4;
}
conta+=3;
int random = rand()%conta + 1;
cout<<random;
tempRuta = primeroRutas;
conta = 0;
asignaciones+=3;
comparaciones++;
lineasEjecutadas+=4;
while(tempRuta != NULL){
conta++;
comparaciones++;
lineasEjecutadas+=3;
if(conta == random){
rutaRandom = tempRuta->nombreRuta;
asignaciones++;
lineasEjecutadas+=4;
break;
}
asignaciones++;
tempRuta = tempRuta->sigRutas;
lineasEjecutadas+=2;
}
}
}
string rutaString = "";
string rutaRandom = "";
void push(string c){
struct Pila * nnP = new Pila(c);
nnP->sig = pila;
pila = nnP;
}
void pop(){
if(pila==NULL)
return;
struct Pila * borrar = pila;
pila = pila->sig; /// El primer nodo de la pila se pasa
delete borrar;
}
void imprimir(struct Pila * pila){
if(pila == NULL)
return;
imprimir(pila->sig);
cout<<pila->ciudad<<", ";
rutaString = rutaString + pila->ciudad;
}