SoloCodigo
Programación General => C/C++ => Mensaje iniciado 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.
-
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
-
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.
-
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