• Sábado 14 de Diciembre de 2024, 17:36

Autor Tema:  Necesito Ayuda Y Soporte  (Leído 2556 veces)

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Necesito Ayuda Y Soporte
« en: Jueves 21 de Septiembre de 2006, 03:58 »
0
hola necesito un programa que me han dejado de tarea y no tengo la menor idea de donde empezar o por lo menos que me ayuden a hacerlo se trata de un "GENERADOR DE ARBOLES GENEALOGICOS" con interfaz grafica hasta ahorita solo hemos visto arboles pero poco en codigo sobre ellos (arboles), solo lo elemental de insertar, borrar, eliminar, etc. tengo 15 a partir de hoy para entregarlo les pido por favor que me ayuden si quieren mas especificaciones las dare lo mas pronoto posible pero si con el tema entienden por favor ayudenme y si alguien tiene una idea que me pase un programa similar

gracias!!

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #1 en: Jueves 21 de Septiembre de 2006, 04:15 »
0
aqui les dejo mas especificado lo que quiero ^_^

Programa Generador de Árboles Genealógicos.


Objetivos. Desarrollar una aplicación con interfaz gráfica que permita generar gráficamente un árbol genealógico.


Conceptos a aplicar:


Árboles.
Operaciones Básicas sobre árboles.


Características


-El sistema permite catalogar información jerárquica es decir en una estructura de árbol.

-El sistema debe ser capaz de generar un árbol que contenga todas las descendencias de una familia.

-Por lo menos debe contener 5 niveles de descendencias.
-Debe almacenar en cada nodo: nombre de la persona, año de nacimiento, parentesco.

-Toda la información a mostrar en el árbol deberá estar almacenada previamente en un archivo de texto, el cual la aplicación se encargara de abrir y tomar cada dato para colocarlo en el árbol.

-El sistema debe permitir que el usuario realice las siguientes operaciones: agregar, eliminar y modificar información de descendientes (es decir que en todo momento se jugara con los nodos).

-El sistema debe permitir que el archivo de texto se actualice con cada cambio que el usuario decida hacer.

-El formato interno del archivo de texto lo define el estudiante.

-El sistema no debe permitir datos repetidos.

SteelX

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #2 en: Jueves 21 de Septiembre de 2006, 06:58 »
0
Espero y no estes queriendo que te hagamos la tarea <_<
Inside the code

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #3 en: Jueves 21 de Septiembre de 2006, 09:09 »
0
:P  :P  :P pues mostrarnos algun avance y decirnos en que te estas atorando porque no hacemos tareas...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #4 en: Viernes 22 de Septiembre de 2006, 05:11 »
0
mmmmmmm bueno yo ya avance un poco hasta el punto 3 que he especificado alla arriba y pues estoy atorado en el paso 4 noc como meter datos a un solo nodo
como puedo hacer?

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #5 en: Viernes 22 de Septiembre de 2006, 05:14 »
0
he podido lograr meter un numero por nodo
algo asi es lo de los datos o...como?

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #6 en: Viernes 22 de Septiembre de 2006, 07:43 »
0
;)  ;)

no hagas mal uso de este codigo solo tomalo de ejemplo:


Código: Text
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <conio.h>
  6. #define true 1
  7.  
  8.  
  9. void intro_nodo(void);
  10. void lista_nodos(void);
  11. void borra_nodo(void);
  12. void lista_preorden();
  13. void lista_inorden();
  14. void lista_postorden();
  15.  
  16. struct arbol *borra();
  17. struct arbol *crea_arbol();
  18.  
  19. struct arbol{
  20.   char clave;
  21.   struct arbol *izquierda;
  22.   struct arbol *derecha;
  23. };
  24.  
  25. struct arbol *raiz;
  26.  
  27. struct arbol *borra (struct arbol *raiz, char nodo){
  28.   struct arbol *d1, *d2;
  29.   if(raiz->clave == nodo){
  30.     if(raiz->izquierda == raiz->derecha){
  31.       free(raiz);
  32.       return (NULL);
  33.     }
  34.     else if(raiz->izquierda == NULL){
  35.       d1 = raiz->derecha;
  36.       free(raiz);
  37.       return (d1);
  38.     }
  39.     else if(raiz->derecha == NULL){
  40.       d1 = raiz->izquierda;
  41.       free(raiz);
  42.       return (d1);
  43.     }
  44.     else{
  45.       d2 = raiz->derecha;
  46.       d1 = raiz->derecha;
  47.       while(d1->izquierda)d1 = d1->izquierda;
  48.       d1->izquierda = raiz->izquierda;
  49.       free(raiz);
  50.       return(d2);
  51.     }
  52.   }
  53.   if(raiz->clave<nodo)
  54.     raiz->derecha = (struct arbol *)borra(raiz->derecha, nodo);
  55.   else
  56.     raiz->izquierda = (struct arbol *)borra(raiz->izquierda, nodo);
  57.   return raiz;
  58. }
  59.  
  60.  
  61.  
  62. struct arbol *crea_arbol(struct arbol *raiz, struct arbol *aux, char dato){
  63.   if(!aux){
  64.     aux = (struct arbol *)malloc (sizeof(struct arbol));
  65.     aux->izquierda = (struct arbol *)NULL;
  66.     aux->derecha = (struct arbol *)NULL;
  67.     aux->clave = dato;
  68.     if(!raiz)raiz = (struct arbol *) crea_arbol(raiz, raiz, dato);
  69.     else raiz->derecha = aux;
  70.     return aux;
  71.   }
  72.   if
  73.     (dato < aux->clave) (struct arbol*)crea_arbol(aux, aux->izquierda, dato);
  74.   else
  75.     if(dato > aux->clave) (struct arbol *)crea_arbol(aux, aux->derecha, dato);
  76. }
  77.  
  78.  
  79.  
  80. void intro_nodo(void){
  81.   char dato;
  82.   do{
  83.     printf("\n\tIntroduzca dato: ");
  84.     gets(&dato);
  85.     if(!raiz)raiz = (struct arbol *)crea_arbol(raiz, raiz, dato);
  86.     else (struct arbol *) crea_arbol(raiz, raiz, dato);
  87.   }while(dato);
  88. }
  89.  
  90.  
  91.  
  92. void borra_nodo(void){
  93.   char dato;
  94.   printf("\n\tDato a borrar: ");
  95.   gets(&dato);
  96.   (struct arbol *) borra (raiz, dato);
  97. }
  98.  
  99.  
  100.  
  101. void lista_preorden(struct arbol *aux){
  102.   int orden;
  103.   if(!aux)return;
  104.   printf("\n\t%c\t", aux->clave);
  105.   lista_preorden(aux->izquierda);
  106.   lista_preorden(aux->derecha);
  107. }
  108.  
  109.  
  110.  
  111. void lista_inorden(struct arbol *aux){
  112.   int orden;
  113.   if(!aux)return;
  114.   lista_inorden(aux->izquierda);
  115.   printf("\n\t%c\t", aux->clave);
  116.   lista_inorden(aux->derecha);
  117. }
  118.  
  119.  
  120.  
  121. void lista_postorden(struct arbol *aux){
  122.   int orden;
  123.   if(!aux)return;
  124.   lista_postorden(aux->izquierda);
  125.   lista_postorden(aux->derecha);
  126.   printf("\n\t%c\t", aux->clave);
  127. }
  128.  
  129.  
  130.  
  131. void lista_nodos(void){
  132.   clrscr();
  133.   printf("\n\tListado de los nodos del arbol");
  134.   printf("\n\tP.............Preorden");
  135.          printf("\n\tI.............Inorden");
  136.   printf("\n\tS.............Postorden");
  137.   switch(toupper(getche())){
  138.     case 'P': lista_preorden(raiz);
  139.         break;
  140.     case 'I': lista_inorden(raiz);
  141.         break;
  142.     case 'S': lista_postorden(raiz);
  143.         break;
  144.   }
  145. }
  146.  
  147.  
  148.  
  149.  
  150. void main(void){
  151.   raiz = (struct arbol *)NULL;
  152.   while(true){
  153.     clrscr();
  154.     printf("\n\tMenu del programa de un arbol");
  155.     printf("\n\tA.............Añadir nodo");
  156.            printf("\n\tL.............Listado de nodos");
  157.     printf("\n\tB.............Borrar nodos");
  158.     printf("\n\tX.............Terminar");
  159.     switch(toupper(getche())){
  160.       case 'A': intro_nodo();
  161.           break;
  162.       case 'L': lista_nodos();
  163.           break;
  164.       case 'B': borra_nodo();
  165.           break;
  166.       case 'X': exit(0);}}}
  167.  
  168.  
  169.  
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #7 en: Lunes 25 de Septiembre de 2006, 03:17 »
0
solo una duda para que es este codigo de programa? este, porque con introducir y borrar, etc no tengo mucho problema ^_^ mi problema es como hago para introducir en un nodo digamos:
nombre:ddhd
edad: 25
parentesco:lkfjdlkfjdfk

como hago eso?^^

yo he podido ingresar numeros digamos el 5.^_^

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #8 en: Lunes 25 de Septiembre de 2006, 03:23 »
0
ah y otra cosa no me corrio el programa de ese codigo que me prestaste porque me salen unos errores mira mi programa algo asi esta :

(este lo hicimos con unos compañeros pero lo de los caracteres como que casi no sabemos)

dime algo para que esto pueda capturar caracteres de la manera ya antes mencionada

#include <iostream>
using namespace std;
int valor,x,ok=0,y,result=0,numhojas=0,vector[50],r,i;
class ArbolABB {
 private:
  //// Clase local de Lista para Nodo de ArbolBinario:
  class Nodo {
    public:
     // Constructor:
     Nodo(const int dat, Nodo *izq=NULL, Nodo *der=NULL) :
       dato(dat), izquierdo(izq), derecho(der) {}
     // Miembros:
     int dato;
     Nodo *izquierdo;
     Nodo *derecho;
  };

  // Punteros de la lista, para cabeza y nodo actual:
  Nodo *raiz;
  Nodo *actual;
  int contador;
  int altura;

 public:
  // Constructor y destructor básicos:
  ArbolABB() : raiz(NULL), actual(NULL) {}
  ~ArbolABB() { Podar(raiz); }
  // Insertar en árbol ordenado:
  void Insertar(const int dat);
  // Borrar un elemento del árbol:
  void Borrar(const int dat);
  // Función de búsqueda:
  bool Buscar(const int dat);
  // Comprobar si el árbol está vacío:
  bool Vacio(Nodo *r) { return r==NULL; }
  // Comprobar si es un nodo hoja:
  bool EsHoja(Nodo *r) { return !r->derecho && !r->izquierdo; }
  // Contar número de nodos:
  const int NumeroNodos();
  const int AlturaArbol();
  // Calcular altura de un int:
  int Altura(const int dat);
  // Devolver referencia al int del nodo actual:
  int &ValorActual() { return actual->dato; }
  // Moverse al nodo raiz:
  void Raiz() { actual = raiz; }
  // Aplicar una función a cada elemento del árbol:
  void InOrden(void (*func)(int&) , Nodo *nodo=NULL, bool r=true);
  void PreOrden(void (*func)(int&) , Nodo *nodo=NULL, bool r=true);
  void PostOrden(void (*func)(int&) , Nodo *nodo=NULL, bool r=true);
  void contarhojas(void (*func)(int&) , Nodo *nodo=NULL, bool r=true);

 private:
  // Funciones auxiliares
  void Podar(Nodo* &);
  void auxContador(Nodo*);
  void auxAltura(Nodo*, int);
};

// Poda: borrar todos los nodos a partir de uno, incluido
void ArbolABB::Podar(Nodo* &nodo)
{
  // Algoritmo recursivo, recorrido en postorden
  if(nodo) {
     Podar(nodo->izquierdo); // Podar izquierdo
     Podar(nodo->derecho);   // Podar derecho
     delete nodo;            // Eliminar nodo
     nodo = NULL;
  }
}

// Insertar un int en el árbol ABB
void ArbolABB::Insertar(const int dat)
{
  Nodo *padre = NULL;

  actual = raiz;
  // Buscar el int en el árbol, manteniendo un puntero al nodo padre
  while(!Vacio(actual) && dat != actual->dato) {
     padre = actual;
     if(dat > actual->dato) actual = actual->derecho;
     else if(dat < actual->dato) actual = actual->izquierdo;
  }

  // Si se ha encontrado el elemento, regresar sin insertar
  if(!Vacio(actual)) return;
  // Si padre es NULL, entonces el árbol estaba vacío, el nuevo nodo será
  // el nodo raiz
  if(Vacio(padre)) raiz = new Nodo(dat);
  // Si el int es menor que el que contiene el nodo padre, lo insertamos
  // en la rama izquierda
  else if(dat < padre->dato) padre->izquierdo = new Nodo(dat);
  // Si el int es mayor que el que contiene el nodo padre, lo insertamos
  // en la rama derecha
  else if(dat > padre->dato) padre->derecho = new Nodo(dat);
}

// Eliminar un elemento de un árbol ABB
void ArbolABB::Borrar(const int dat)
{
  Nodo *padre = NULL;
  Nodo *nodo;
  int aux;

  actual = raiz;
  // Mientras sea posible que el valor esté en el árbol
  while(!Vacio(actual)) {
     if(dat == actual->dato) { // Si el valor está en el nodo actual
        if(EsHoja(actual)) { // Y si además es un nodo hoja: lo borramos
           if(padre) // Si tiene padre (no es el nodo raiz)
              // Anulamos el puntero que le hace referencia
              if(padre->derecho == actual) padre->derecho = NULL;
              else if(padre->izquierdo == actual) padre->izquierdo = NULL;
           delete actual; // Borrar el nodo
           actual = NULL;
           return;
        }
        else { // Si el valor está en el nodo actual, pero no es hoja
           // Buscar nodo
           padre = actual;
           // Buscar nodo más izquierdo de rama derecha
           if(actual->derecho) {
              nodo = actual->derecho;
              while(nodo->izquierdo) {
                 padre = nodo;
                 nodo = nodo->izquierdo;
              }
           }
           // O buscar nodo más derecho de rama izquierda
           else {
              nodo = actual->izquierdo;
              while(nodo->derecho) {
                 padre = nodo;
                 nodo = nodo->derecho;
              }
           }
           // Intercambiar valores de no a borrar u nodo encontrado
           // y continuar, cerrando el bucle. El nodo encontrado no tiene
           // por qué ser un nodo hoja, cerrando el bucle nos aseguramos
           // de que sólo se eliminan nodos hoja.
           aux = actual->dato;
           actual->dato = nodo->dato;
           nodo->dato = aux;
           actual = nodo;
        }
     }
     else { // Todavía no hemos encontrado el valor, seguir buscándolo
        padre = actual;
        if(dat > actual->dato) actual = actual->derecho;
        else if(dat < actual->dato) actual = actual->izquierdo;
     }
  }
}

// Recorrido de árbol en inorden, aplicamos la función func, que tiene
// el prototipo:
// void func(int&);
void ArbolABB::InOrden(void (*func)(int&) , Nodo *nodo, bool r)
{
  if® nodo = raiz;
  if(nodo->izquierdo) InOrden(func, nodo->izquierdo, false);
  func(nodo->dato);
  if(nodo->derecho) InOrden(func, nodo->derecho, false);

}

// Recorrido de árbol en preorden, aplicamos la función func, que tiene
// el prototipo:
// void func(int&);
void ArbolABB::PreOrden(void (*func)(int&), Nodo *nodo, bool r)
{
  if® nodo = raiz;
  func(nodo->dato);
  if(nodo->izquierdo) PreOrden(func, nodo->izquierdo, false);
  if(nodo->derecho) PreOrden(func, nodo->derecho, false);
}

// Recorrido de árbol en postorden, aplicamos la función func, que tiene
// el prototipo:
// void func(int&);
void ArbolABB::PostOrden(void (*func)(int&), Nodo *nodo, bool r)
{
  if® nodo = raiz;
  if(nodo->izquierdo) PostOrden(func, nodo->izquierdo, false);
  if(nodo->derecho) PostOrden(func, nodo->derecho, false);


   if((!nodo->izquierdo) && (!nodo->derecho)){
         numhojas++;
         vector[numhojas]=nodo->dato;

  }
       cout<<endl;

  func(nodo->dato);
}

// Buscar un valor en el árbol
bool ArbolABB::Buscar(const int dat)
{
  actual = raiz;

  // Todavía puede aparecer, ya que quedan nodos por mirar
  while(!Vacio(actual)) {
     if(dat == actual->dato) return true; // int encontrado
     else if(dat > actual->dato) actual = actual->derecho; // Seguir
     else if(dat < actual->dato) actual = actual->izquierdo;
  }
  return false; // No está en árbol
}

// Calcular la altura del nodo que contiene el int dat
int ArbolABB::Altura(const int dat)
{
  int altura = 0;
  actual = raiz;

  // Todavía puede aparecer, ya que quedan nodos por mirar
  while(!Vacio(actual)) {
     if(dat == actual->dato) return altura; // int encontrado
     else {
        altura++; // Incrementamos la altura, seguimos buscando
        if(dat > actual->dato) actual = actual->derecho;
        else if(dat < actual->dato) actual = actual->izquierdo;
     }
  }
  return -1; // No está en árbol
}

// Contar el número de nodos
const int ArbolABB::NumeroNodos()
{
contador = 0;

  auxContador(raiz); // FUnción auxiliar
  return contador;
}

// Función auxiliar para contar nodos. Función recursiva de recorrido en
//   preorden, el proceso es aumentar el contador
void ArbolABB::auxContador(Nodo *nodo)
{
  contador++;  // Otro nodo
  // Continuar recorrido
  if(nodo->izquierdo) auxContador(nodo->izquierdo);
  if(nodo->derecho)   auxContador(nodo->derecho);
}

// Calcular la altura del árbol, que es la altura del nodo de mayor altura.
const int ArbolABB::AlturaArbol()
{
  altura = 0;
  auxAltura(raiz, 0); // Función auxiliar
  return altura;
}

// Función auxiliar para calcular altura. Función recursiva de recorrido en
// postorden, el proceso es actualizar la altura sólo en nodos hojas de mayor
// altura de la máxima actual
void ArbolABB::auxAltura(Nodo *nodo, int a)
{
  // Recorrido postorden
  if(nodo->izquierdo) auxAltura(nodo->izquierdo, a+1);
  if(nodo->derecho)   auxAltura(nodo->derecho, a+1);
  // Proceso, si es un nodo hoja, y su altura es mayor que la actual del
  // árbol, actualizamos la altura actual del árbol
  if(EsHoja(nodo) && a > altura) altura = a;
}

// Función de prueba para recorridos del árbol
void Mostrar(int &d)
{
  cout << d << ",";
}


void ArbolABB::contarhojas(void (*func)(int&), Nodo *nodo, bool r)
{
  if® nodo = raiz;
  if(nodo->izquierdo) PostOrden(func, nodo->izquierdo, false);
  if(nodo->derecho) PostOrden(func, nodo->derecho, false);


   if((!nodo->izquierdo) && (!nodo->derecho)){
         numhojas++;
         vector[numhojas]=nodo->dato;
  }

  func(nodo->dato);
}



int main()
{
         ArbolABB ArbolInt;
  int opc;
       do{
               cout<<"menu"<<endl;
               cout<<"1. insertar"<<endl;
               cout<<"2. borrar nodo"<<endl;
               cout<<"3. buscar altura de un nodo"<<endl;
               cout<<"4. calcular altura de arbol"<<endl;
               cout<<"5. buscar dato"<<endl;
               cout<<"6. recorrer arbol"<<endl;
               cout<<"7. Contar hojas "<<endl;
               cout<<"8. Salir"<<endl;
               cout<<"elija una opcion"<<endl<<endl;
               cin>>opc;

               switch(opc){
               case 1:
                       cout<<"digite el nuevo nodo a insertar: ";
                       cin>>x;
                        ArbolInt.Insertar(x);
                        cout<<endl<<endl;
                       break;
               case 2:
                       cout<<"digite el nodo a borrar: "<<endl;
                       cin>>x;
                       ArbolInt.Borrar(x);
                       cout<<endl;

                       break;
               case 3:
                       cout<<"digite el valor del nodo a buscar altura: "<<endl;
                       cin>>x;
                       cout << "Altura de "<<x<<" "<< ArbolInt.Altura(x) << endl;
                       break;
               case 4:
                          cout << "Altura de arbol " << ArbolInt.AlturaArbol() << endl;
                       break;
               case 5:
                       cout<<"digite el nodo a buscar: "<<endl;
                       cin>>y;
                       result=ArbolInt.Buscar(y);
                       if(result!=0){
                               cout<<"dato encontrado"<<endl;
                       }
                       if(result==0){
                               cout<<"el dato no existe en el arbol"<<endl<<endl;;
                       }
                       break;
               case 6:
                       // Mostrar el árbol en tres ordenes distintos:
       cout << "InOrden: ";
  ArbolInt.InOrden(Mostrar);
  cout << endl;
  cout << "PreOrden: ";
  ArbolInt.PreOrden(Mostrar);
  cout << endl;
  cout << "PostOrden: ";
  ArbolInt.PostOrden(Mostrar);
  cout << endl;
  numhojas=0;//para que no aumente el numero total de hojas cuando haga el recorrido postorden
                       break;

               case 7:
                       cout<<"el arbol: "<<endl;
                       ArbolInt.contarhojas(Mostrar);
                       cout<<"tiene "<<numhojas<<"hojas"<<endl;
                       for(i=1;i<=numhojas;i++){
                               cout<<"hoja "<<i<<": "<<vector<<endl;

                       }//fin del for

                       numhojas=0;
                       break;

               case 8:
                       cout<<"finalizando programa"<<endl;
                       break;

               default:
                       cout<<"opcion invalida"<<endl<<endl;
                       break;
               }//fin del switch
       }while(opc!=8);
       cin.get();
  return 0;
}

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #9 en: Lunes 25 de Septiembre de 2006, 03:50 »
0
lo estoy trabajando con clases casi no entendi tu codigo tambien estoy trabajndo con DEV-C++ eso de pront y sacnf no lo puedo usar y no lo puedo leer

bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #10 en: Lunes 25 de Septiembre de 2006, 04:01 »
0
lo estoy trabajando con clases casi no entendi tu codigo tambien estoy trabajndo con DEV-C++ eso de print y scanf no lo puedo usar y no lo puedo leer aqui esta mi codigo pero no tengo ideas de hacerle insertar chars

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #11 en: Lunes 25 de Septiembre de 2006, 09:14 »
0
:D  :D  :D

Por eso no nos gusta pasar codigo este programa lo hice hace años para turbo C...
yo utilice estructuras y no clases , mmmm bueno podeis checar este link y seguro encuentras algo:
http://c.conclase.net/edd/index.php?cap=006
http://search.freefind.com/find.html?id=65...uery=arboles&s=


Espero te sea de ayuda...
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


bobyjoe

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Necesito Ayuda Y Soporte
« Respuesta #12 en: Viernes 29 de Septiembre de 2006, 07:32 »
0
Gracias!!!!!!!!!