Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - matrod

#1
solo para cerrar el tema...lo terminé resolviendo asi:

Citarcamino_t buscar_camino(const lista l, const binario b){
   binario baux=b;
   camino_t caux;
   caux.existe=false;
   caux.cantidad_ramas=0;
   caux.ramas= new rama_t[largo_lista(l)];
   bool bandera=true;
   int i=0;
   localizador loc=inicio_lista(l);
   while (es_localizador_lista(loc) && bandera)
   { if (!es_vacio_binario(baux))
   {bandera=comparar_texto(texto_info(raiz_binario(baux)),texto_info(info_lista(loc,l)))==igual;   }
   else {bandera=false;}
   if (bandera)
   {if (es_localizador_lista(siguiente(loc,l)))
   {   
      texto_t texto_sig=texto_info(info_lista(siguiente(loc,l),l));
      texto_t texto_actual=texto_info(info_lista(loc,l));
      if (comparar_texto(texto_sig,texto_actual)==mayor)
      {baux=baux->der; caux.ramas=der; i++;}
      else
      {baux=baux->izq; caux.ramas=izq; i++;}
   }   
   }
   
   loc=siguiente(loc,l);
   }
   if (!es_localizador_lista(loc) && altura_binario(baux)==1){caux.existe=bandera; caux.cantidad_ramas=i;}
   else {delete[] caux.ramas;}
   return caux;
}


(localizador es un puntero a un nodo de la lista)

De todas formas otras funciones tenian error y me quedé sin pasar todos los test que le hacen...mañana me dan el resultado pero creo que perdí el curso...  :-\
#2
Hola! tengo una entrega en facultad y hay una función que me está matando...

me piden hacer una función que dado un arbol binario de busqueda y una lista, me devuelva el "camino" que hace esa lista si es que existe dentro del arbol... el encabezado es este:

camino_t buscar_camino(const lista l, const binario b);

y el tipo camino es asi:

struct camino_t {
bool existe ;
array_rama ramas ;
nat cantidad_ramas ;
};

PD: existe una función que creo que es util:
texto_t camino_a_texto(const camino_t c) {
  texto_t res;
  // espacio suficiente para "No existe" o para cada rama y la coma y la
  // cantidad, el guión y los paréntesis.
  char cadena[c.cantidad_ramas * 2 + 10];
  if (!c.existe) {
    strcpy(cadena, "No existe");
  } else {
    sprintf(cadena, "%d", c.cantidad_ramas);
    strcat(cadena, "-(");
    if (c.cantidad_ramas > 0) {
      agregar_rama(cadena, c.ramas[0]);
      for (nat i = 1; i < c.cantidad_ramas; i++) {
        strcat(cadena, ",");
        agregar_rama(cadena, c.ramas[i]);
      }
    }
    strcat(cadena, ")");
  }
  res = cadena_a_texto(cadena);
  return res;
}

al menos creo que de ahi se puede sacar algo...eso intenté pero no sale...se cuelga todo

AYUDAAAA



MOD EDIT: No hacer doble post.