En este grupo En todos

Foro de Programación e Informática



Error en código de C++

Susanasf97
Cádiz, España
Escrito por Susanasf97
el 06/11/2008

A ver si alguien me puede ayudar.

Tengo el siguiente código en C++ de la función main:

int main()

{

time_t t1, t2;

int x,y,*dir,ch;

casillero c1,c2;

TipoDePoda poda;

booleano ok;

CLista<CPuzzle> solucion;

printf(" Estado inicial:"); //Pedimos los datos del estado

EntradaDatos(c1,x,y); //inicial y creamos p1.

CPuzzle p1(c1,x,y);

printf(" Estado final:"); //Pedimos los datos del estado

EntradaDatos(c2,x,y); //final y creamos p2.

CPuzzle p2(c2,x,y);

printf(" Que heuristica quieres usar? ");

printf(" (1) Aciertos. (2) Distancias. ");

printf("? ");

scanf("%i",&x);

if (x==1) p1. UsarH(aciertos); //Elegimos la heuristica a utilizar

else p1. UsarH(distancias);

printf(" Que tipo de poda quieres usar? ");

printf(" (1) Sin poda. (2) Poda parcial. (3) Poda total. ");

printf("? ");

scanf("%i",&x);

if(x==1) poda=sinPoda; // Y el tipo de poda

if(x==2) poda=podaParcial;

if(x==3) poda=podaTotal;

dir=(int *) &costeOperador; //Apunta al vector de costes de los

//operadores.

//Con todos los datos creamos una instancia de "problema"

CProblema<CPuzzle> problema(p1,p2,4,dir,50);

IDA<CPuzzle> algoritmo(&problema);

//Resolvemos el puzzle

t1=time(NULL);

algoritmo. BuscarSolucion(&solucion,poda);

t2=time(NULL);

printf(" ");

x=-1;

while (! Solucion. EsVacia()) //Si hay solucion...

{

solucion. Extraer(p1);

printf("Estado %i: ",++x); //... La presentamos por pantalla

p1. Dibujar();

ch=getchar();

}

//Presentacion del resto de los datos.

printf(" Tiempo: %f",difftime(t2,t1));

printf(" Longitud de la solucion: %i",algoritmo. LongitudSolucion());

printf(" Numero de nodos expandidos: ");

cout << algoritmo. NodosExpandidos();

printf(" Penetracion (L/T): %f",algoritmo. Penetracion());

double sol=algoritmo. FacRamificacion(ok);

printf(" Factor de ramificacion: %f",sol);

if (ok) printf(" (OK) ");

if (! Ok) printf(" (FALLO) ");

printf("Comprobacion: %f",func(sol));

printf(" Maximo nivel del arbol (maximo numero de nodos en memoria simultaneamente): %i ",

algoritmo. MaximoNivel());

}

Cuando lo compilo, me da el siguiente error:

Line

Message

In function ‘int main()’

68

No matching function for cal to ‘IDA<CPuzzle>:BuscarSolucion(CLista<CPuzzle>*, TipoDEPODA&)’

note

Candidates are: int IDA<X>:BuscarSolucin(CLixta<X>&, TipoDePoda) [with X=CPuzzle]

[Build Error]:[ida. O] Error 1


En concreto es la línea que anteriormente he marcado en amarillo. El código de la función que da el error es el siguiente:

template <class X> booleano IDA<X>:BuscarSolucion(CLista<X> &lista, TipoDePoda p)

{

booleano ok; //indicar cu ndo hay soluci¢n.

CNodoHeur<X> actual;

poda=p; //Tipo de poda a realizar

//El nodo actual es el de la cabeza de la lista ( rbol)

actual=arbol. VerCabeza();

//Como primer l ¡Mite-f cogemos el valor F del nodo ra ¡Z:

coste limF=actual. F();

do { //Repetimos la llamada a ContornoDFS hasta tener soluci¢n o

printf(" Limite F: %i",limF); //llegar al coste m ximo.

nivel=1;

limF=ContornoDFS(limF, ok);}

while ( (! Ok) && (limF<problema->costeMaximo) );

if (ok) //Si hay soluci¢n extraemos los nodos de la ruta soluci¢n,

{ //de tipo CNodoHeur<X>, y los insertamos en una lista de tipo

//X, que ser la que se devuelva.

longitudSolucion=-1;

while (! Arbol. EsVacia()) //Mientras haya nodos en el rbol

{

arbol. Extraer(actual); //Los extraemos

lista. Insertar(actual. Estado()); //insertamos el

longitudSolucion++; //ESTADO en otra lista e

//incrementamos la long. De la soluci¢n

}

}

return ok;

}

No sé si tendréis los datos suficientes para ayudarme, si necesitáis cualquier otra cosa, por favor, comunicármelo. Lo necesito urgentemente. Siento mucho la parrafada.

Muchas gracias, saludos.