SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: javi2 en Domingo 9 de Mayo de 2004, 00:41

Título: Acceso A Operadores En Tiempo De Ejecución
Publicado por: javi2 en Domingo 9 de Mayo de 2004, 00:41
Resulta que estoy interesado en hacer un programa que simule el funcionamiento de un autómata, y tengo que escribir funciones lógicas durante la ejecución del mismo. Lo he intentado de algunas formas poco ingeniosas y no ha salido.

Mi pregunta es las siguiente:

¿Se puede acceder a un operador del C en tiempo de ejecución?

Durante la ejecución del programa éste pediría los valores de dos variables enteras (x e y). Acto seguido el usuario escribe una operación con x e y, p.e.   z = x + y. El programa lo almacena en la variable z (declarada en el código del programa junto con x e y).  Y finalmente el programa muestra el valor de la variable z en la pantalla.

¿Cómo puedo hacer algo así?               gracias.
Título: Re: Acceso A Operadores En Tiempo De Ejecución
Publicado por: Ruben3d en Domingo 9 de Mayo de 2004, 23:44
Hola.

El lenguaje C no permite interpretar código en tiempo de ejecución. Para hacer lo que quieres tendrás que realizar un parser que procese la fórmula y la introduzca en un árbol de evaluación, en el que cada hoja es un número (o una variable) y cada nodo no hoja es una operación (construido según la prioridad de los operadores). Ya sólo te restaría resolver el árbol y hacer lo que quisieras con el resultado.

Un saludo.

Ruben3d
Título: Re: Acceso A Operadores En Tiempo De Ejecución
Publicado por: JuanK en Lunes 10 de Mayo de 2004, 15:50
Eso es..
en efecto debes hacer una funcion que procese la formula ingresada y tenga en cuenta la proioridad de operadores...
sin embargo ya debe haber alguna libreria que haga eso.
Título: Re: Acceso A Operadores En Tiempo De Ejecución
Publicado por: javi2 en Martes 18 de Mayo de 2004, 02:29
Gracias a los dos. La verdad es que ya me esperaba que no iba a ser nada fácil. El caso es que he escrito algunas aplicaciones en octave, que es interpretado y de muy alto nivel, y quizás he adquirido malos hábitos, pues en octave todos los operadores y funciones son accesibles en tiempo de ejecución. Lo que haré es buscar alguna librería para C o C++, a ser posible estática, y si no aplicaré el lema del maestro Naba: usar la herramienta adecuada; posiblemente un lenguaje interpretado.

Gracias una vez más y un cordial saludo