Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Декабрь 11, 2009, 09:49



Название: Программа преобразующая введёный текст в формулу
Отправлено: merke от Декабрь 11, 2009, 09:49
Всем привет!
Тут столкнулся с такой проблемой, пишу программу для вычисления определённых интегралов разными методами и надо чтобы юзер в поле вводил какую либо функцию и я по этой формуле вычислял интеграл.
Давайте я на примере объясню чего я хочу добиться.

Код:
float f(float x)
{
 //x*x*sin(x)
  return func;
}
//Метод прямоугольников
float Integrate(float x1, float x2, float step)
{
  float x=x1;
  float I=0; // integral value
 
  while (x<x2-step)
  {
    // calculating function at the halfpoint of interval
    I+=step*f(x+step/2);
    x+=step;
  }
 
  return I;
}


Integrate(x,y,step) //Вызов самой процедуры вычисления

Так вот функция f как раз должна содержать функцию, которую пользователь ввёл в какой то текст бокс. Как мне преобразовать введённый текст в функцию чтобы в неё потом при каждом обращении подставлять значение X.

Пожалуйста, очень прошу, помогите с решением. Подскажите алгоритм.
Буду очень благодарен!

С уважением, Александр!


Название: Re: Программа преобразующая введёный текст в формулу
Отправлено: BRE от Декабрь 11, 2009, 09:58
Можно самому парсить формулу, можно для этого воспользоваться утилитами lex/yacc, можно воспользоваться boost::spirit.
Поищи в нете на тему разбора формул.

UP: Можно задействовать QtScript.
Вот какая-то библиотека для парсинга (сам не пользовался): http://www.yann-ollivier.org/mathlib/mathexpr#E

Вот еще подобная тема: http://www.forum.crossplatform.ru/index.php?showtopic=2303