Russian Qt Forum

Программирование => Алгоритмы => Тема начата: Quty от Декабрь 15, 2012, 12:01



Название: Вычисление формулы
Отправлено: Quty от Декабрь 15, 2012, 12:01
Необходимо вычислить формулу (функция от одной переменной), введенной пользователем в LineEdit, например "x^2 + 2*x + 4", где x - переменная, и он будет заменяться конкретными значениями.


Название: Re: Вычисление формулы
Отправлено: mutineer от Декабрь 15, 2012, 12:09
А в чем вопрос?


Название: Re: Вычисление формулы
Отправлено: Dancing_on_water от Декабрь 15, 2012, 12:11
Если делаем на плюсах, то городить парсер. Если нет, то я бы смотрел в сторону QtScript


Название: Re: Вычисление формулы
Отправлено: Igors от Декабрь 15, 2012, 12:38
Необходимо вычислить формулу (функция от одной переменной), введенной пользователем в LineEdit, например "x^2 + 2*x + 4", где x - переменная, и он будет заменяться конкретными значениями.
Это называется "интерпретатор" и никакого отношения к алгоритмам не имеет.
Да, сначала надо разобрать строку и получить контейнер элементами которого будут числа, переменные и операции. Затем выбирается операция с наивысшим приоритетом и 3 элемента контейнера заменяются на один - до тех пор пока не останется 1 значение. Хорошая задачка - для тех кто хочет учиться  :)


Название: Re: Вычисление формулы
Отправлено: kambala от Декабрь 15, 2012, 13:32
если хочется побыстрячку, то QtScript


Название: Re: Вычисление формулы
Отправлено: Quty от Декабрь 15, 2012, 21:50
Всем спасибо, с QtScript не работал, разбираться некогда, буду пользоваться готовым парсером. Вопрос закрыт.


Название: Re: Вычисление формулы
Отправлено: panAlexey от Декабрь 16, 2012, 17:16
Всем спасибо, с QtScript не работал, разбираться некогда, буду пользоваться готовым парсером. Вопрос закрыт.
Лучше бы разобрался.
Как тебе плюшка:
Код:
 QScriptEngine engine;
 QScriptProgram program("1 + 2");
 QScriptValue result = engine.evaluate(program);