• Viernes 8 de Noviembre de 2024, 13:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Conti

Páginas: [1]
1
Diseño de Algoritmos / Re: Arboles Y Nodos Hojas Inciales
« en: Miércoles 7 de Marzo de 2007, 09:22 »
Gracias a todos por la ayuda.Al final la solución era algo parecido a:
Código: Text
  1.  
  2. void eliminarHojas(Arbol<T> a){
  3.   if(!a.esVacio()){
  4.     if(a.HijoDerecho().esVacio()&& a.HijoIzquierdo().esVacio()){
  5.       a.borrar()//en principio noe sta implementado,pero borraría ese nodo padre del subarbol
  6.      
  7.     }else{
  8.       eliminarHojas(a.HijoIzquierdo());
  9.       eliminarHojas(a.HijoDerecho());
  10.       }
  11.     }
  12.   }
  13. }
  14.  
  15.  
Un saludo!

2
Diseño de Algoritmos / Re: Arboles Y Nodos Hojas Inciales
« en: Sábado 3 de Marzo de 2007, 19:29 »
Voy pillando la idea.Según lo que decís debería ser algo así no?(ejemplo usando c++)
Código: Text
  1.  
  2. void eliminarHojas(Arbol<T> a,Cola<T> &c){
  3.   if(!a.esVacio()){//esVacio nos devuelve un booleano segun sea vacio o no el árbol
  4.     if(a.raiz()->hijoIzquierdo == null && a.raiz()->hijoDerecho==null){
  5.       delete a.raiz();
  6.     }else{
  7.       c.insertar(a.raiz);
  8.       eliminarHojas(a.HijoIzquierdo(),c);
  9.       eliminarHojas(a.HijoDerecho(),c);
  10.     }
  11.   }
  12. }//una vez finalice el metodo solo tengo que ir sacando d ela cola los elementos
  13. ///que se irán visitando
  14.  
  15. /*
  16. El metodo raiz() devuelve al nodo raiz del subarbol
  17. El metodo HijoDerecho() devuelve el subarbol derecho de esa raiz
  18. El metodo HijoIzquierdo() devuelve el subarbol izquierdo de esa raiz
  19. Cada nodo e suna estructura que contiene:
  20. T info
  21. Arbol<T> hijoIzquierdo
  22. Arbol<T> hijoDerecho
  23. */
  24.  
  25.  
A ver si por ahí van los tiros  :smartass:

3
Diseño de Algoritmos / Arboles Y Nodos Hojas Inciales
« en: Sábado 3 de Marzo de 2007, 13:19 »
Hola! ^^
Tengo un problema con cierto algoritmo.Veamos:
Dado un árbol binario(no ordenado), eliminar todos los nodos hojas iniciales, es decir aquellos que que son hojas en el momento que me dan el árbol.
El archivo que adjunto, es un dibujito para verlo mas claro.(perdón me ha salido un poco cutre :lol: )

Tendría que borrar los que estan en rojo, ya ya esta.
El problema reside en que cada vez que intento diseñar el algoritmo,simepre me sale una solución recursiva que ser carga todo el árbol,además de los que tiene que eliminar,pero que elimine todo el arbol no forma parte del juego  :blink: .
¿una paqueña pista porfi?  :(
Continuaré mi batalla por sacarlo :lightsabre:


ps:reutilizo muchos métodos del tipo abstracto árbol binario.(como recorrido preorden,etc)
Gracias ^^.

4
C/C++ / Re: [c]puntero A Cadena De Caracteres
« en: Jueves 23 de Noviembre de 2006, 16:58 »
Gracias mamex, al final con ese código me vale :).Un saludo.

[EDITADO]

saludos de nuevo, he estado enredando con el codigo para que lea directamente de teclado y me vaya escribiendo en un fichero,sin pasar por ninguna array ni historias  :alien:
Leer y escribir lo tengo superado, el problema viene cuando le meto la condicion para ver si existe el fichero y si lo quiero sobreescribir.Tal y como esta mi codigo, si digo "s" o "S", deberia permitirme escribir en el fichero,pero sale del programa automáticamente, no consigo ver el fallo :ph34r:  A ver si lo localizais vosotros , gracias  :lol:
Código: Text
  1.  
  2. #include<stdio.h>
  3.  
  4. #define MAXLINE 80
  5.  
  6.  
  7. main(int argc, char *argv[]){
  8.   char* fichero=argv[1];
  9.   char linea[MAXLINE];
  10.   int seguir=1;
  11.   int i=0;
  12.   char decision;
  13.  
  14.   //declaracion del fcihero
  15.   FILE *fp;
  16.   fp = fopen(fichero,"w");
  17.   if ( fp  != NULL){
  18.     printf("El fichero \"%s\" al que hace referencia ya existe\n",fichero);
  19.     printf("¿Desea sobreescribirlo?(S o s)(N o n)");
  20.     decision=getchar();
  21.     if(decision=='n' || decision=='N'){
  22.       exit(0);
  23.     }else{
  24.       while(seguir){
  25.         gets(linea);
  26.        
  27.         if(linea[0]=='\0'){
  28.           seguir=0;
  29.         }else{
  30.           fputs(linea,fp);
  31.           fputs("\n",fp);
  32.         }    
  33.         i++;
  34.       }
  35.  
  36.     }
  37.   }
  38.  
  39.   fclose(fp);
  40. }
  41.  
  42.  

5
C/C++ / Re: [c]puntero A Cadena De Caracteres
« en: Domingo 19 de Noviembre de 2006, 19:13 »
¿como podría solucionarlo?
Interpreto que con:
Código: Text
  1. char *lineas[10];
  2.  
Tengo diez punteros que apuntan a diez cadenas de carácteres, es asi?
linea[0] estaría apuntando a una posición de memoria distinta que linea[1] no?
Entonces si quiero guardar una cadena de texto en es aposición ,¿tendría que hacerlo con &linea? :ph34r:
Los punteros, mis grandes amigos  :rolleyes:

6
C/C++ / [c]puntero A Cadena De Caracteres
« en: Domingo 19 de Noviembre de 2006, 17:36 »
Saludos! :D
aunque sea mi primer post, no pretendo que me hagan el programa entero,tengo una duda concreta :).
Estoy haciendo un programita de inicio a C:
-Coger el nombre d eun fichero por linea de argumentos(solucionado)
-Leer lineas de caracteres(aqui estoy)
-Guardar en el fichero que he nombrado , las lineas leidas(si consigo el anterior,ya tengo este)

Os pongo el código que llevo:

Código: Text
  1.  
  2. #include<stdio.h>
  3. #include<math.h>
  4. #include<stdlib.h>
  5. #include<string.h>
  6. #define MAXLINE 80
  7.  
  8. main(int argc, char *argv[]){
  9.   char* nombre_fichero=argv[1];
  10.  
  11.   char linea[MAXLINE];
  12.   char *lineas[10];
  13.  
  14.   int seguir=1;
  15.   int i=0;
  16.   int j=0;
  17.  
  18.   while(seguir){
  19.    
  20.    
  21.     lineas[i]=gets(linea);
  22.     if(linea[0]=='\0'){
  23.       seguir=0;
  24.     }
  25.     printf("%s\n",lineas[i]);
  26.      
  27.      
  28.     i++;
  29.   }printf("%s\n",lineas[0]);
  30.  
  31. }
  32.  
  33.  
  34.  
Me voy directo al while:
-guardo en la primera posicion del puntero la primera linea
-si empieza por nuelo, sale del while
-imprimo lo que he leido, guardaod en la posicion i del puntero
-aumento el contador i.

¿veis ese printf despues dle while?
Ahí es donde tengo el problema, imprime en blanco como si no se hubiese guardado nada en esa posicion.Es el mismo printf que esta dentro del while, pero estando fuera me imprime en blanco y estando dentro hace su función.
Me gustaría saber porqué sucede eso, si es psible, gracias.  :hola:

Páginas: [1]