Saltar al contenido

Evaluar expresiones aritméticas de string en C++

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

  1. muy simple
  2. solo necesita incluir “exprtk.hpp” en su código fuente.
  3. puede cambiar el valor de las variables de la expresión dinámicamente.
  4. 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)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *