problemas con arbole binario de busquedas!!

Iniciado por 01munrra, 20 Junio 2011, 03:44 AM

0 Miembros y 1 Visitante están viendo este tema.

01munrra

saludos !!!

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

Código (cpp) [Seleccionar]


struct Resumen_Paciente
{
string Clave;
int Total_resNormales;
int Total_resAnormales;
};

typedef ArbolBB<Resumen_Paciente> arbolbb;
typedef nodo<Resumen_Paciente> *ApuntadorBB;

void Resumen_Resultado(arbolbb &arbolBB, Pila<OrdenExamen> &pila,ListaDob<Det_Examen> *listaDetalle)
{
  Pila<OrdenExamen> aux;
  nodo2<Det_Examen> *p;
  ApuntadorBB ap;
  OrdenExamen ObjOrden;
  Det_Examen ObjDetalle;
  Resumen_Paciente ObjResumen;
  int acumNormal = 0;
  int acumAnormal = 0;

  ap = arbolBB.ObtRaiz();
  while( !pila.Vacia() )
   {
    pila.Remover(ObjOrden);
    aux.Insertar(ObjOrden);
    p = listaDetalle->ObtPrimero();

    do
     {
        if( ObjDetalle.getValor() == "normal" )
         {
          acumNormal++;
          p = listaDetalle->ObtDer(p);
         }
        else
         {
          acumAnormal++;
          p = listaDetalle->ObtDer(p);
         }
     } while( p != listaDetalle->ObtPrimero() );

    ObjResumen.Clave = ObjOrden.getCedula();
    ObjResumen.Total_resAnormales = acumNormal;
    ObjResumen.Total_resNormales = acumAnormal;

    arbolBB.Insertar(ap,ObjResumen);
   }
  arbolBB.AsigRaiz(ap);
}



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 (cpp) [Seleccionar]


template <class Tipo>
bool ArbolBB<Tipo>::Insertar(nodo<Tipo>* &p,Tipo valor) //El insertar lo hace en las hojas
{
  Apuntador auxp,nuevo,ant;
  Tipo auxiliar;
  auxp=p;

  nuevo = CrearNodo(valor);
  if (p==NULL)        //si esta vacio el arbol
            p=nuevo;
  else
    while (auxp!=NULL)
      {
       auxiliar = ObtInfo(auxp);
       if  (valor.Clave() == auxiliar.Clave())
               return false;
      else
           if  (valor.Clave() < auxiliar.Clave()) {
             ant=auxp;
             //auxp=ObtIzq(auxp);
             auxp = auxp->Izq; //si puedo hacer esto
             if (auxp==NULL)
               InsHijoIzq(ant,valor);       }
        else  {
             ant=auxp;
            auxp=ObtDer(auxp);
             if (auxp==NULL)
               InsHijoDer(ant,valor);      };
       };
  return true;

};



no entiendo el error, les agradezco su ayuda!!

Acermax

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.

01munrra