Добавлен Isstrebitel
Проблема такая:
Существует в виде string арифметическое выражение. Я его не знаю, так как задаётся оно пользователем. Нужно вычислить его значение. Переменные не встречаются (вернее, встречаются, но я с этим разобрался и преобразовал их в той переменной в их значения). Нужно вычислить значение этого выражения.
Существует ли какой-нибудь быстрый способ это сделать? Написать то такое я смогу, только вот, может уже существует что-то подобное?
Существует в виде string арифметическое выражение. Я его не знаю, так как задаётся оно пользователем. Нужно вычислить его значение. Переменные не встречаются (вернее, встречаются, но я с этим разобрался и преобразовал их в той переменной в их значения). Нужно вычислить значение этого выражения.
Существует ли какой-нибудь быстрый способ это сделать? Написать то такое я смогу, только вот, может уже существует что-то подобное?
Принятый ответ
prog, в JS есть функция из коробки
var value = eval("2 + 3");
Я так в свою программу PositionMeter встроил редактор формул, основанный на интерпритации JavaScript
Isstrebitel, я собирался написать статью по созданию дерева выражений и вычислением его. Но могу вот что сказать:
Isstrebitel, я собирался написать статью по созданию дерева выражений и вычислением его. Но могу вот что сказать:
- Сперва надо распарсить на токены твое выражение (Константы, Идентификаторы, Управляющие символы, Операторы)
- Дальше надо построить дерево выражения
- Оптимизировать дерево выражений, вынести общие части в один узел (не обязательно)
- И потом просто рекурсивно его посчитать
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
P.S. как по мне, то полезнее написать свое, в плане получаемого опыта.
Увлёкся описанием проблемы и забыл написать, на каком это языке.
Отредактирован prog
А так - библиотеки точно есть и на чистый шарп и на юньку, но простой парсер арифметики как по мне проще написать, чем искать в сети и настраивать.
Isstrebitel, я собирался написать статью по созданию дерева выражений и вычислением его. Но могу вот что сказать: