elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Error en arbol
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en arbol  (Leído 2,451 veces)
Lateseles

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Error en arbol
« en: 2 Noviembre 2011, 14:56 pm »

Hay alguien que haya conseguido la version completa en español del libro: "El lenguaje de programacion c++" de bjarne strosutrup ?. Dicho esto, estaba intentando hacer un arbol binario. compila bien pero al ejecutarse en la consola aparece lo que deberia aparecer, se obtiene bien el resultado pero, al mismo tiempo sale el cartelito de error. Si alguien puede darme un consejo se lo agradeceria.
----------------------------------------------------------------------------------------------------
Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct Nodo
  6. {
  7.    int valor;
  8.    char letra;
  9.    Nodo *pMenor;
  10.    Nodo *pMayor;
  11. };
  12.  
  13. class Arbol
  14. {
  15.   private:
  16.   Nodo *pOrigen;
  17.  
  18.   public:
  19.    Arbol(int num, char c)
  20.    { pOrigen->pMayor = NULL;
  21.      pOrigen->pMenor = NULL;
  22.      pOrigen->valor = num;
  23.      pOrigen->letra = c;
  24.    }
  25.    void Add(int num, char c)
  26.    {
  27.        Nodo *pRecorre = pOrigen;
  28.        while(true)
  29.        {
  30.            if(num > pRecorre->valor)
  31.            {
  32.                if(pRecorre->pMayor == NULL)
  33.                {
  34.                    Nodo *pNuevoNodo = new Nodo;
  35.                    pNuevoNodo->valor = num;
  36.                    pNuevoNodo->letra = c;
  37.                    pNuevoNodo->pMayor = NULL;
  38.                    pNuevoNodo->pMenor = NULL;
  39.                    pRecorre->pMayor = pNuevoNodo;
  40.                    break;
  41.                }
  42.                else
  43.                {
  44.                    pRecorre = pRecorre->pMayor;
  45.                }
  46.            }
  47.  
  48.            else if(num < pRecorre->valor)
  49.            {
  50.                if(pRecorre->pMenor == NULL)
  51.                {
  52.                    Nodo *pNuevoNodo = new Nodo;
  53.                    pNuevoNodo->valor = num;
  54.                    pNuevoNodo->letra = c;
  55.                    pNuevoNodo->pMayor = NULL;
  56.                    pNuevoNodo->pMenor = NULL;
  57.                    pRecorre->pMenor = pNuevoNodo;
  58.                    break;
  59.                }
  60.                else
  61.                {
  62.                    pRecorre = pRecorre->pMenor;
  63.                }
  64.            }
  65.            else
  66.            {
  67.                pRecorre->letra = c;
  68.                break;
  69.            }
  70.        }
  71.    }
  72.  
  73.    char Find(const int num)
  74.    {
  75.        Nodo *pRecorre = pOrigen;
  76.        while(true)
  77.        {
  78.            if(pRecorre->valor == num)
  79.            {
  80.                return pRecorre->letra;
  81.            }
  82.            else if(num > pRecorre->valor)
  83.            {
  84.                if(pRecorre->pMayor == NULL) { return '&'; }
  85.                else
  86.                {
  87.                    pRecorre = pRecorre->pMayor;
  88.                }
  89.            }
  90.            else if(num < pRecorre->valor)
  91.            {
  92.                if(pRecorre->pMenor == NULL) { return '&'; }
  93.                else
  94.                {
  95.                    pRecorre = pRecorre->pMenor;
  96.                }
  97.            }
  98.        }
  99.    }
  100. };
  101.  
  102. int main()
  103. {
  104.    Arbol miArbol(0, 'g');
  105.    miArbol.Add(5, 'f');
  106.    miArbol.Add(6, 'f');
  107.    miArbol.Add(7, 'f');
  108.    miArbol.Add(8, 'f');
  109.    miArbol.Add(9, 'D');
  110.    char c = 'A';
  111.    c = miArbol.Find(9);
  112.    cout << "La letra es:  " << c << endl;
  113.    return 0;
  114. }


« Última modificación: 2 Noviembre 2011, 19:17 pm por Lateseles » En línea

Lateseles

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: Error en arbol
« Respuesta #1 en: 3 Noviembre 2011, 14:27 pm »

Despues de darle muchas vueltas encontre el error. Estaba en el constructor del arbol.
Arbol(int num, char c)
    {
      pOrigen = new Nodo; //Con esta linea se soluciona
      pOrigen->pMayor = NULL;
      pOrigen->pMenor = NULL;
      pOrigen->valor = num;
      pOrigen->letra = c;
    }


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Error en arbol
« Respuesta #2 en: 4 Noviembre 2011, 06:01 am »

¡Buenas!

Cierto, yo tampoco lo habia visto. :D, acuerdate de crear un destructor para liberar la memoria dinamicamente asignada.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mi arbol
Diseño Gráfico
Azielito 1 2,599 Último mensaje 4 Marzo 2004, 02:28 am
por StraTovario
Un arbol con columnas
.NET (C#, VB.NET, ASP)
elmaro 6 5,134 Último mensaje 4 Febrero 2008, 21:39 pm
por MANULOMM
Estructura arbol
PHP
chicuela66 3 2,407 Último mensaje 9 Febrero 2008, 20:11 pm
por dimitrix
Arbol AVL
Java
arkaos 6 19,219 Último mensaje 31 Mayo 2009, 05:33 am
por arkaos
Error al imprimir un arbol en c++
Programación C/C++
Pluging 0 1,620 Último mensaje 19 Marzo 2017, 03:36 am
por Pluging
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines