Algoritmia - evaluador

 
Vista:

evaluador

Publicado por valeria (1 intervención) el 12/08/2004 04:45:13
mi pregunta quizas es muy primitiva, pero la verdad es que no se como empezar. Quiero construir un evaluador de expresiones matematicas( solo con: ^, *,+,-,(,), sen y cos), cuento con un algoritmo eval que evalua estas expresiones pero no tengo ni idea si tengo que combinar con automatas o algo asi.
por fabor me explican???????? como tengo que hacer
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Construcción de un evaluador de expresiones matemáticas

Publicado por Alejandro (307 intervenciones) el 01/03/2024 20:13:45
No te preocupes, la pregunta es totalmente válida y es un excelente punto de partida para entender cómo construir un evaluador de expresiones matemáticas. Aquí te proporcionaré una guía básica sobre cómo puedes abordar este problema.

1. Tokenización:
- Divide la expresión matemática en elementos más pequeños llamados "tokens". Por ejemplo, para la expresión `3 + 5 * (2 - 6)`, los tokens serían `[3, +, 5, *, (, 2, -, 6, )]`.

2. Análisis sintáctico (parsing):
- Construye una gramática que defina la estructura sintáctica de las expresiones matemáticas. Puedes utilizar herramientas como las expresiones regulares o construir un analizador sintáctico.

3. Árbol de expresiones (árbol sintáctico):
- Utiliza el análisis sintáctico para construir un árbol de expresiones que represente la jerarquía de las operaciones en la expresión.

4. Evaluación del árbol:
- Implementa un algoritmo recursivo para evaluar el árbol de expresiones. Recorre el árbol de manera recursiva, evaluando las operaciones en cada nodo.

5. Manejo de funciones trigonométricas:
- Para las funciones seno y coseno, puedes integrar su evaluación en tu algoritmo. Utiliza las funciones trigonométricas proporcionadas por tu lenguaje de programación.

A continuación, te doy un ejemplo básico en Python para entender el concepto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import re
import math
 
def tokenize(expression):
    # Tokeniza la expresión matemática
    return re.findall(r'\d+|\+|\-|\*|\^|\/|\(|\)|sin|cos', expression)
 
def parse(tokens):
    # Analiza sintácticamente los tokens y construye el árbol de expresiones
    # (puedes usar una estructura de datos como un diccionario o una clase)
    pass
 
def evaluate_tree(node):
    # Evalúa el árbol de expresiones de manera recursiva
    pass
 
def evaluate_expression(expression):
    tokens = tokenize(expression)
    tree = parse(tokens)
    result = evaluate_tree(tree)
    return result
 
# Ejemplo de uso
expression = "3 + 5 * (2 - 6)"
result = evaluate_expression(expression)
print(result)

Este es solo un esquema básico, y hay muchas formas de implementar un evaluador de expresiones matemáticas. Si las expresiones que estás manejando son más complejas, podrías considerar bibliotecas existentes o implementar técnicas más avanzadas. ¡Espero que esta guía inicial te ayude a empezar, Valeria!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar