Te doy la bienvenida a proyecto online, en este sitio vas a hallar la solucíon a lo que andabas buscando.
Solución:
Uno puede probar: http://partow.net/programming/exprtk/index.html
- muy simple
- solo necesita incluir “exprtk.hpp” en su código fuente.
- puede cambiar el valor de las variables de la expresión dinámicamente.
- buen punto de partida: http://partow.net/programming/exprtk/code/exprtk_simple_example_01.cpp
Creo que estás buscando un analizador de descenso recursivo simple.
He aquí un ejemplo muy simple:
const char * expressionToParse = "3*2+4*1+(4+9)*6";
char peek()
return *expressionToParse;
char get()
return *expressionToParse++;
int expression();
int number()
int result = get() - '0';
while (peek() >= '0' && peek() <= '9')
result = 10*result + get() - '0';
return result;
int factor()
if (peek() >= '0' && peek() <= '9')
return number();
else if (peek() == '(')
get(); // '('
int result = expression();
get(); // ')'
return result;
else if (peek() == '-')
get();
return -factor();
return 0; // error
int term()
int result = factor();
while (peek() == '*'
int expression()
int _tmain(int argc, _TCHAR* argv[])
int result = expression();
return 0;
Solo para agregar otra alternativa, considere probar TinyExpr para este problema. Es de código abierto y autónomo en un archivo de código fuente. En realidad, está escrito en C, pero se compilará limpiamente como C++ según mi experiencia.
Resolver su expresión de ejemplo anterior es tan simple como:
#include "tinyexpr.h"
#include
int main()
double answer = te_interp("3*2+4*1+(4+9)*6", 0);
printf("Answer is %fn", answer);
return 0;
Si piensas que ha resultado útil nuestro post, agradeceríamos que lo compartas con más seniors así nos ayudas a difundir nuestro contenido.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)