Russian Qt Forum
Ноябрь 01, 2024, 07:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Программа преобразующая введёный текст в формулу  (Прочитано 3201 раз)
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.

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

С уважением, Александр!
Записан
BRE
Гость
« Ответ #1 : Декабрь 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
« Последнее редактирование: Декабрь 11, 2009, 10:17 от BRE » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.119 секунд. Запросов: 21.