Технологии
Работа с введенными формулами - вопрос №168474
Здравствуйте.
У меня такой вопрос: как использовать формулу для вычисления, введенную в TEdit?
Например я ввожу в поле Edit 'sin(x)' в другой Edit значение X и мне соответственно нужно программно извлечь формулу из edit'а, либо посчитать значение в нём… Подскажите как это реализовать?
Заранее благодарен
Дополнение автора от декабрь 24, 2011 г., 20:11:37
Речь идёт о неизвестной программисту формуле, то есть у меня есть на форме компонент TChart и компонент TEdit в который пользователь вводит функцию
(y=f(X) к примеру), соответственно необходим код позволяющий выщитывать значения функции при определённых иксах для построения графика функции...
Я думал над вариантом перебора всех символов и через case расшифровки текста формулы переводя её в понятный для делфи язык...
Роман декабрь 22, 2011 г.
-
Всего ответов: 2
-
Еслли задача имнно в вычислении какойто функции от одного аргумента то if вам в помощь. просто проверяйте что ввел пользвоатель. а если нужно решать формулу то это задача то вс енамного сложнее.Нужно паресрить вырыжение провидть к обратной польской записи, строить деревой операций и уже по нему сичтать.
-
как упомянул коллега ранее, это и называется парсинг - http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7
в своей формулировке вопроса Вы говорите о распознавании произвольной математической формулы. но это не тривиальная задача. простого короткого совета нет. пробуйте любые варианты, так даже быстрее поймете в чем суть..
скажем так — не надо перебирать все возможные символы. для начала ограничте возможности пользователя 2-3 функциями на свой вкус, базовыми арифметическими операциями "+" "-" "*" "/" "=" и однобуквенными переменными..
в процессе реализации придет и понимание задачи в более общем виде
можете поискать примеры исходного кода по словам
«калькулятор на делфи»
«парсинг формул на делфи»
но собственный опыт полезнее. в том числе понять чужой код который делает уже что то достаточно серьезное проще имея свой минимальный опыт
Похожие вопросы