Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/11/2012, 11:32
Avatar de paula23andrea
paula23andrea
 
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
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!!