Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Tratar un vector como árbol binario

Estas en el tema de Tratar un vector como árbol binario en el foro de C/C++ en Foros del Web. Buenos días... Mi problema en esta ocasión es un problema lógico en el siguiente programa: Debo a través de herencia simple, generar un vector que ...
  #1 (permalink)  
Antiguo 25/11/2012, 11:32
Avatar de paula23andrea  
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 12 años
Puntos: 1
Exclamación Tratar un vector como árbol binario

Buenos días...
Mi problema en esta ocasión es un problema lógico en el siguiente programa:

Debo a través de herencia simple, generar un vector que contiene la secuencia de números según el número de niveles como si fuera un árbol binario, es decir, le pregunto al usuario el número de niveles (de una abstracta estructura, ya que en código sólo debe haber vectores) y hago un arreglo de tamaño (2^n)-1 donde n es el número de niveles que ingresaron...
las clase hijo debe tener los datos de la rama izquierda... es decir, si ingrese 3 como el número de niveles, generé un vector con los números 1 2 3 4 5 6 7 ... el arreglo de la clase hijo debe tener los números 2 4 5 .. estoy haciendo la asignación bien, y si puedo crear bien los arreglos, lo que no sé es como hacer para meter esos números al vector hijo, no tengo la menor idea, porque no encuentro una secuencia de las posiciones del vector padre, es una simulación de árbol binario completo...
dejo el código por si es de guía o si alguien tiene idea de cómo hacerlo :(

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. #include <math.h>
  4.  
  5. class datos
  6. {
  7.  protected:        
  8.  int *a, n;
  9.  int ta;
  10.  
  11.  public:
  12.        
  13.  void leer()
  14.  {
  15.   cout<<"Cuantos niveles tendra la estructura?"<<endl;
  16.   cin>>n;
  17.   ta=(pow(2, n))-1;
  18.  
  19.   a=new int[ta];
  20.   if(a==NULL)
  21.   cout<<"Error en asignacion de memoria"<<endl;  
  22.    
  23.   for(int i=0; i<ta; i++)
  24.   a[i]=i+1;
  25.  }
  26.  
  27.  void ver()
  28.  {
  29.   cout<<"La estructura contiene: "<<endl;    
  30.   for(int i=0; i<ta; i++)
  31.   cout<<a[i]<<"  ";    
  32.   cout<<endl;
  33.  }
  34. };
  35.  
  36. class izquierdo: public datos
  37. {
  38.  int *ai, ti;
  39.  
  40.  public:
  41.        
  42.  void buscarI()
  43.  {
  44.   ti=(ta-1)/2;  
  45.              
  46.   ai=new int[ti];
  47.   if(ai==NULL)
  48.   cout<<"ERROR"<<endl;
  49.  
  50.   //acá debe ir lo que le debo meter al vector!
  51.  for(int i=0; i<ti; i++)
  52.  ai[i]=???      
  53.  
  54.  }
  55.  
  56.  void mostrarI()
  57.  {
  58.   cout<<"Los datos de la estructura izquierda son: "<<endl;
  59.   for(int i=0; i<ti; i++)
  60.   cout<<ai[i]<<"  ";
  61.  }
  62. };
  63.  
  64. int main()
  65. {
  66.  izquierdo i;
  67.  
  68.  i.leer();
  69.  i.ver();
  70.  i.buscarI();
  71.  i.mostrarI();
  72.  
  73.  system("pause");
  74. };
__________________
Suerte!!

Etiquetas: herencia, logica, vectores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.