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 - Ragnarok

#81
Código (cpp) [Seleccionar]
int esPalindromo(char *s){
  for (int i=0, j=strlen(s)-1; s[i] == s [j] && i < j; i++, j--);
  return i >= j;
}
#82
Java / Re: RETO, árboles en Java
8 Abril 2009, 22:45 PM
Esto suena a ejercicio de clase...
#83
Programación C/C++ / Re: AFD
21 Marzo 2009, 22:00 PM
Se tiene que poder hacer con muchas menos líneas que 1800, pero muchas menos.

Para analizar las transiciones tienes que tener una doble tabla, por estado y por carácter que entra, teniendo por valor el estado al que llega, puedes hacer lo mismo con una matriz. Es complejidad de orden constante, no fuerza bruta...
#84
Programación C/C++ / Re: AFD
21 Marzo 2009, 08:30 AM
Este ejemplo es de los que quedan mejor con programación orientada a objetos (POO), pero igualmente lo puedes hacer con un tipo abstracto de datos (TAD), o... como lo has hecho, que es una chapuza pero funciona.

El caso es que tienes un tipo de datos, que es un autómata, que a su vez tiene varios tipos o campos, los estados, la tabla de transiciones, etc.

A este autómata le pasas una cadena y ves si la acepta, en tu caso, sin POO sería una función para manejar este TAD, le pasas una variable del TAD, la cadena y te devuelve un booleano (el tipo de datos en C tendrá que ser un int, char o lo que quieras, pero semánticamente funciona como booleano).

Para ver si acepta la cadena lo que tienes que hacer (si no tienes iniciado el autómata por defecto) es iniciar el autómata en el estado inicial (son dos campos, estado actual y estado inicial) se hace con la función iniciar aplicada a ése tipo de datos, que te devuelve el mismo autómata en el estado inicial.

Luego le vas pasando caracter por caracter, lo mismo, otra función, le pasas un caracter y el autómata, internamente mira la tabla de transiciones y el estado actual, y lo actualiza con la transicioń correspondiente.

Y cuando se acaba la cadena lo que haces es mirar si el estado actual está en la lista de estados finales, también otra función de manejo del TAD. Y el retorno de esa función es el retorno de la función para comprobar si acepta una cadena.

Se hace un poco duro porque manejar TADs es más pesado que manejar objetos, al estar programando, pero tampoco tiene mucho.

Más o menos es como lo has hecho, pero con un TAD es programación estructurada y como lo tienes es un caos :P tienes que entender que en programación es más habitual hacer middleware, librerías, etc. que programas completos, y el código que has hecho es poco reutilizable. Imagina el lío que tendría que montar alguien si quisiera por ejemplo hacer una interfaz gráfica para manejar autómatas.
#85
Pues al manual...

Mira aquí tienes una lista de herramientas para construir analizadores sintácticos en java:
http://java-source.net/open-source/parser-generators

Y aquí otra:
http://catalog.compilertools.net/java.html

El manual de jack va a ser que no es tan fácil de encontrar como creía, después de un rato buscándolo no lo he encontrado. El hacer un parser tampoco es tan fácil, es una tarea para segundo o tercero de carrera, en primero te puede costar mucho hacerlo.

Lee las normas, deberías editar el mensaje original.

Y también necesitas una lista con las sentencias de java, para poder ponerle los nombres conforme a ése esquema de nombrado, porque no sé si serías capaz de hacerlo a mano, es decir, sin un programa, pero es muy difícil hacer con un programa algo que no puedes hacer a mano a menos que te metas en algo de redes de neuronas artificiales, algoritmos genéticos y otras formas de aprendizaje automático.
#86
Bienvenida. Lee las normas,  un manual de jack, o de la alternativa a yacc y lex para java que prefieras, creo que jack es la más popular.

Cuando tengas dudas concretas las preguntas.
#87
te tendrás que hacer un parser para contar las sentencias de java. Con jack o con lo que quieras.
#88
self.nombremetodo([argumentos])

PD: por cierto, el primer argumento de todo método es siempre self, así que no hay métodos sin argumentos. Sólo se pone en la definición, no en las invocaciones.

Mejor lee un poco más acerca de POO en python, porque si no todo van a ser dudas...
#89
Java / Re: Como hago un p2p en Java???????
6 Marzo 2009, 17:51 PM
Sí, hay que mirarlo con cuidado y con tiento para mirar la parte que interesa, por eso dije que lo mirara al menos para ver las librerías que usan (y, evidentemente, usar las mismas).
#90
Java / Re: Como hago un p2p en Java???????
6 Marzo 2009, 15:07 PM
puff, tela para mirar wireshark.

Mejor busca librerías en java que te ayuden a hacer un p2p, porque a lo mejor está ya hecho. Hay librerías de tablas hash distribuidas y de montones de cosas. Y muchos p2p que son libres y están hechos en java...

Ya depende de cómo quieres que sea, si quieres intercambio de archivos Azureus es una buena opción, si quieres encontrarlos antes de intercambiarlos el protocolo de kademlia, etc.