Nothing, in the end I have changed the type of value of char to string and it works perfect:#include <cstdlib>
#include <iostream>
#include <time.h>
#include <string.h>
using namespace std;
/*******************************************************************************
Declaración del tipo Arbol como una estructura que contendrá un puntero llamado
raíz que apuntará a una estructura denominada nodoA
nodoA será una estructura que estructura que contendrá 3 clavees: la clave (que
sirve para ordenar los elementos dentro del árbol, izq que será un puntero a su
subárbol izquierdo y der que será un puntero a su subárbol derecho. Faltarían
los datos que contienen la información del nodo.
*******************************************************************************/
typedef struct nodoA
{
string clave;
string marca;
string modelo;
string tipo;
int potencia;
struct nodoA *izq,*der;
}*nodoarbol;
typedef struct Tree
{
struct nodoA *raiz;
}*arbol;
/*******************************************************************************
Función que sirve para crear un árbol binario vacío. El nodo raíz contendrá
como clave inicial el valor -1 pero se considera que está vacío.
/
arbol CrearArbol()
{
arbol ar= new struct Tree;
ar->raiz = new struct nodoA;
ar->raiz->izq = ar->raiz->der = NULL;
ar->raiz->clave = "-1";
return(ar);
}
/
Función que sirve para determinar si un árbol está vacío, es decir, si su
nodo raíz contiene la clave -1.
/
bool ArbolVacio(arbol ar)
{
if (ar->raiz->clave =="-1") return(true);
else return(false);
}
/
Función que determina si un valor para determinar si un valor clave existe en
el árbol.
/
bool BusquedaclaveArbol(nodoarbol nodo,string laclave)
{
if (nodo == NULL) return(false);
else
{
if (nodo->clave ==laclave) return(true);
else
{
if (nodo->clave < laclave) return(BusquedaclaveArbol(nodo->der,laclave));
else return(BusquedaclaveArbol(nodo->izq,laclave));
};
};
}
/
Función que inserta una clave en el árbol si ésta no existe en él.
*******************************************************************************/
void InsertarclaveArbol(arbol ar,string laclave, string lamarca, string elmodelo, string eltipo, int lapotencia)
{
struct nodoA *nodo_padre,*nodo_aux;
nodo_padre = new struct nodoA;
nodo_aux = new struct nodoA;
nodo_padre = NULL;
nodo_aux = ar->raiz;
cout << "Raiz: " << nodo_aux << endl;
cout << "Clave de la raiz: " << nodo_aux->clave << endl;
cout << "Clave a insertar: " << laclave << endl;
if (ArbolVacio(ar))
{
nodo_aux->clave = laclave;
nodo_aux->marca = lamarca;
nodo_aux->modelo = elmodelo;
nodo_aux->tipo = eltipo;
nodo_aux->potencia = lapotencia;
return;
//EN EL CASO DE QUE EL ARBOL ESTE VACIO SE ASIGNA LA CLAVE AL NODO RAIZ
}
while ((nodo_aux!=NULL) && (nodo_aux->clave!=laclave))
{
nodo_padre = nodo_aux; //RECORRER HASTA POSICIONARSE DONDE INSERTAR
if( laclave < nodo_aux->clave) nodo_aux = nodo_aux->izq;
else nodo_aux = nodo_aux->der;
}
/* Si SE HA ENCONTRADO EL ELEMENTO, NO SE PUEDE INSERTAR */
if (nodo_aux!=NULL)
{
cout << laclave << " NO SE PUEDE INSERTAR PUES YA EXISTE" << endl;
return;
};
if(laclave < nodo_padre->clave)
{
/* SI LA CLAVE A INSERTAR ES MENOR QUE LA QUE CONTIENE EL NODO PADRE
SE INSERTA EN EL SUBARBOL IZQUIERDO */
struct nodoA *nodo;
nodo = new struct nodoA;
nodo_padre->izq = nodo;
nodo->clave = laclave;
nodo->marca = lamarca;
nodo->modelo = elmodelo;
nodo->tipo = eltipo;
nodo->potencia = lapotencia;
nodo->izq = nodo->der = NULL;
}
else
{
/* SI LA CLAVE A INSERTAR ES MAYOR QUE LA QUE CONTIENE EL NODO PADRE
SE INSERTA EN EL SUBARBOL DERECHO */
struct nodoA *nodo;
nodo = new struct nodoA;
nodo_padre->der = nodo;
nodo->clave = laclave;
nodo->marca = lamarca;
nodo->modelo = elmodelo;
nodo->tipo = eltipo;
nodo->potencia = lapotencia;
nodo->izq = nodo->der = NULL;
}
}
int main(int argc, char *argv[])
{
arbol elarbol1;
elarbol1 = CrearArbol();
if (ArbolVacio(elarbol1)) cout << "EL ARBOL ESTA VACIO" << endl;
else cout << "EL ARBOL NO ESTA VACIO" << endl;
string matricula = "1111LLL";
string modelo= "modelo";
string marca= "marca";
string tipo = "tipo";
int potencia = 500;
string propmatricula;
string propmodelo;
string propmarca;
string proptipo;
int proppotencia;
InsertarclaveArbol(elarbol1,"0000LLL","Marca","Modelo","T",500);
InsertarclaveArbol(elarbol1,matricula,marca,modelo,tipo,potencia);
InsertarclaveArbol(elarbol1,"2222LLL","Marca","Modelo","T",500);
InsertarclaveArbol(elarbol1,"3333LLL","Marca","Modelo","T",500);
cout << "Matricula" << endl << "Opcion: ";
cin >> matricula;
cout << "modelo" << endl << "Opcion: ";
cin >> modelo;
cout << "marca" << endl << "Opcion: ";
cin >> marca;
cout << "tipo" << endl << "Opcion: ";
cin >> tipo;
cout << "potencia" << endl << "Opcion: ";
cin >> potencia;
InsertarclaveArbol(elarbol1,matricula,marca,modelo,tipo,potencia);
InsertarclaveArbol(elarbol1,"5555LLL","Marca","Modelo","T",500);
InsertarclaveArbol(elarbol1,"6666LLL","Marca","Modelo","T",500);
InsertarclaveArbol(elarbol1,"7777LLL","Marca","Modelo","T",500);
InsertarclaveArbol(elarbol1,"8888LLL","Marca","Modelo","T",500);
if (ArbolVacio(elarbol1)) cout << "EL ARBOL ESTA VACIO" << endl;
else cout << "EL ARBOL NO ESTA VACIO" << endl;
string num;
cout << "Matricula a buscar: ";
cin >> num;
if (BusquedaclaveArbol(elarbol1->raiz,num))
cout << "EL clave " << num << " EXISTE EN EL ARBOL" << endl;
else
cout << "EL clave " << num << " NO EXISTE EN EL ARBOL" << endl;
cout << "Matricula a buscar: ";
cin >> num;
if (BusquedaclaveArbol(elarbol1->raiz,num))
cout << "EL clave " << num << " EXISTE EN EL ARBOL" << endl;
else
cout << "EL clave " << num << " NO EXISTE EN EL ARBOL" << endl;
cout << "desea salir?" << endl;
int decision;
cin >> decision;
if(decision == 1){
system("PAUSE");
}
}