Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: 01munrra en 20 Junio 2011, 03:44 am



Título: problemas con arbole binario de busquedas!!
Publicado por: 01munrra en 20 Junio 2011, 03:44 am
saludos !!!

estoy insertándoles valores a un arbol binario de búsquedas, esto es lo que hice :

Código
  1.  
  2. struct Resumen_Paciente
  3. {
  4. string Clave;
  5. int Total_resNormales;
  6. int Total_resAnormales;
  7. };
  8.  
  9. typedef ArbolBB<Resumen_Paciente> arbolbb;
  10. typedef nodo<Resumen_Paciente> *ApuntadorBB;
  11.  
  12. void Resumen_Resultado(arbolbb &arbolBB, Pila<OrdenExamen> &pila,ListaDob<Det_Examen> *listaDetalle)
  13. {
  14.  Pila<OrdenExamen> aux;
  15.  nodo2<Det_Examen> *p;
  16.  ApuntadorBB ap;
  17.  OrdenExamen ObjOrden;
  18.  Det_Examen ObjDetalle;
  19.  Resumen_Paciente ObjResumen;
  20.  int acumNormal = 0;
  21.  int acumAnormal = 0;
  22.  
  23.  ap = arbolBB.ObtRaiz();
  24.  while( !pila.Vacia() )
  25.   {
  26.    pila.Remover(ObjOrden);
  27.    aux.Insertar(ObjOrden);
  28.    p = listaDetalle->ObtPrimero();
  29.  
  30.    do
  31.     {
  32.        if( ObjDetalle.getValor() == "normal" )
  33.         {
  34.          acumNormal++;
  35.          p = listaDetalle->ObtDer(p);
  36.         }
  37.        else
  38.         {
  39.          acumAnormal++;
  40.          p = listaDetalle->ObtDer(p);
  41.         }
  42.     } while( p != listaDetalle->ObtPrimero() );
  43.  
  44.    ObjResumen.Clave = ObjOrden.getCedula();
  45.    ObjResumen.Total_resAnormales = acumNormal;
  46.    ObjResumen.Total_resNormales = acumAnormal;
  47.  
  48.    arbolBB.Insertar(ap,ObjResumen);
  49.   }
  50.  arbolBB.AsigRaiz(ap);
  51. }
  52.  
  53.  


y me da los siguientes errores:

In file included from ArbolBB.h:18,
                 from main.cpp:9:
ArbolBB.cpp: In member function ‘bool ArbolBB<Tipo>::Insertar(nodo<Tipo>*&, Tipo) [with Tipo = Resumen_Paciente]’:
main.cpp:752:   instantiated from here
ArbolBB.cpp:54: error: no match for call to ‘(std::string) ()’
ArbolBB.cpp:54: error: no match for call to ‘(std::string) ()’
ArbolBB.cpp:57: error: no match for call to ‘(std::string) ()’
ArbolBB.cpp:57: error: no match for call to ‘(std::string) ()’

// este es el metodo del error esta en la clase ArbolBB.cpp

Código
  1.  
  2. template <class Tipo>
  3. bool ArbolBB<Tipo>::Insertar(nodo<Tipo>* &p,Tipo valor) //El insertar lo hace en las hojas
  4. {
  5.  Apuntador auxp,nuevo,ant;
  6.  Tipo auxiliar;
  7.  auxp=p;
  8.  
  9.  nuevo = CrearNodo(valor);
  10.  if (p==NULL)        //si esta vacio el arbol
  11.            p=nuevo;
  12.  else
  13.    while (auxp!=NULL)
  14.      {
  15.       auxiliar = ObtInfo(auxp);
  16.       if  (valor.Clave() == auxiliar.Clave())
  17.               return false;
  18.      else
  19.           if  (valor.Clave() < auxiliar.Clave()) {
  20.             ant=auxp;
  21.             //auxp=ObtIzq(auxp);
  22.             auxp = auxp->Izq; //si puedo hacer esto
  23.             if (auxp==NULL)
  24.               InsHijoIzq(ant,valor);       }
  25.        else  {
  26.             ant=auxp;
  27.            auxp=ObtDer(auxp);
  28.             if (auxp==NULL)
  29.               InsHijoDer(ant,valor);      };
  30.       };
  31.  return true;
  32.  
  33. };
  34.  
  35.  

no entiendo el error, les agradezco su ayuda!!


Título: Re: problemas con arbole binario de busquedas!!
Publicado por: Acermax en 20 Junio 2011, 04:05 am
Clave no es una función, es un string. En cambio tu operas como si fuera una función.

valor.Clave()

Simplemente quítale los paréntesis.


Título: Re: problemas con arbole binario de busquedas!!
Publicado por: 01munrra en 20 Junio 2011, 06:36 am
gracias!!!! era eso....