Autor
|
Tema: ayuda con un arbol binario (Leído 2,510 veces)
|
Pipe99
Desconectado
Mensajes: 1
|
Buenas noches, estoy haciendo un programa en java que apartir de un String que tiene una operacion matematica por ejemplo "5+7*3-56/5+45". esto tiene que quedar en un arbol binario y luego resolverse. Yo tenia planeado contar cuantos signos hay y dividirlo en 2 para que el gigno de la mitad sea la raiz y con subString poner la parte derecha de signo en el hijo derecho y la izquierda en el hijo izquierdo y hacer recursividad hasta completar el arbol. pero el problema es que nose como obtener la posicion del signo de la mitad, por el momento solo se cuantos signos hay y pensaba hacer un arreglo que me guardara los numeros haciendo un split para que omita los signos String x="785+6-7*4/4+9+445"; String separadores = "[\\+\\-\\*\\/]"; String z[] = x.split(separadores); for(int i=0;i<z.length();i++){ System.out.println(z ); }
con esto logro guardar en un espacio los numeros de varios digitos pero no se como meter los signos en ese arreglo. espero me haya echo entender y de antemano gracias por su ayuda.
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Ostia macho, tu descripción incomoda, bueno a mi algo,
Mmmm, Te refieres al signo del medio cual ? String x = "785+6-7*4/4+9+445";
con esto logro guardar en un espacio los numeros de varios digitos pero no se como meter los signos en ese arreglo. espero me haya echo entender y de antemano gracias por su ayuda.
con el método .insert() de la clase StringBuilder puedes meter esos signos que deseas en cualquier parte de tu String
|
|
« Última modificación: 26 Abril 2018, 00:50 am por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
Serapis
|
0 - El árbol binario que pides, al caso dado, se llama arbol sintáctico.
1 - La función split, no vale, porque corta por los caracteres pedidos, dejando fuera esos caracteres qe son los operadores. 2 - Además, el operador de asignación '=', lo quedas fuera. Lo mismo que a x. 'x' es una variable, que debe ser tratado exactamente igual que si fuera un número.
3 - Toda la operatoria debe ser un bucle, que recorra buscando bytes o caracteres, reconozca numeros/variables/identificadores (como en el siguiente ejemplo) por un lado y operadores por otro. Los paréntesis también son operadores, en este caso de prioridad (se resuelve lo que está dentro antes de resolver lo de más afuera). x = (j * k) + 5 - ((n * 7) + cantidad)
4- Debes considerar la prioridad de los operadores, a falta de paréntesis, se deben seguir las reglas de precedencia de operadores, y la estructura adecuada para mediar con el bucle y el árbol es una pila.
5 - Con un árbol sintáctico, los nodos terminales siempre contienen el operando (número, variable...) y los nodos internos contienen el operador, quedando el operador en medio de los operandos se conoce como notación infija
6 - Tal vez te interese seguir otro modelo. Revisa la notación polaca inversa, donde los 2 operandos quedan juntos antes del operador.
nota: te he marcado en negrita, todo aquello que puedes buscar en google, para profundizar...
|
|
« Última modificación: 27 Abril 2018, 02:37 am por NEBIRE »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda Impresion de Arbol Binario
Programación C/C++
|
negux
|
2
|
4,432
|
25 Noviembre 2010, 09:28 am
por Akai
|
|
|
Ayuda, no puedo borrar nodos de un Arbol Binario de Busqueda (Solucionado) [C++]
Programación C/C++
|
DarkSorcerer
|
7
|
13,151
|
8 Marzo 2014, 02:47 am
por DarkSorcerer
|
|
|
Urgenteeeeee!!! Ayuda con arbol binario de busqueda
Programación C/C++
|
mathias_vg
|
2
|
2,268
|
20 Noviembre 2015, 18:54 pm
por 0xFer
|
|
|
MOVIDO: ayuda con un arbol binario
Foro Libre
|
Eleкtro
|
0
|
1,234
|
25 Abril 2018, 08:03 am
por Eleкtro
|
|
|
Ayuda con un arbol binario
Programación C/C++
|
freshhprince
|
1
|
2,921
|
20 Noviembre 2021, 03:34 am
por .xAk.
|
|