Dev - C++ - Algoritmos en dev c++

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Algoritmos en dev c++

Publicado por Fernando (1 intervención) el 17/06/2015 07:13:23
Aqui tiene un codigo probabilistico en c++, esperemos te ayude

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar