Есть у кого функция разбора математического выражения? #313942


#0 by TDV
по типу чтобы разобрала (Х1+Х2*25%)*(У1+У2/2) Собственно?
#1 by ASV
а зачем
#2 by Иде я
Разобрала на что ? Разобрала и вычислила ?
#3 by TDV
Ну да разобрала и вычислила
#4 by el-gamberro
По идее надо правила разбора переписать и все. Ничего сложного.
#5 by Vitello
эта поделка вроде как умеет вычислять произвольные выражения. написана тока к**во
#6 by el-gamberro
Тока формат должен сохраняться ес-но.
#7 by TDV
К сожелению не являюсь участником данного клуба, если можно выслать на мой ящик буду благодарен tdv2003kz@rambler.ru
#8 by NS
Вы имеете в виду вычисление скобочного выражения? Это олимпиадная задачка "на час"
#9 by ado
Когда то была очень популярная бивлиотека для Delphi под названием RxLibrary. В ней была реализована такя функция. Причем весьма неплохо реализована. Если сможешь ее найти, можно эту функцию оттуда выдрать, библиотека с исходниками распространялась. Я ее в одном своем курсаче использовал.
#10 by ado
Не, ну насчет часа ты погорячился ... особенно если в выражении еще и функции присутствуют ...
#11 by ado
+ Вот здесь можно скачать: Нужная тебе функция: Parsing unit: function GetFormulaValue(const Formula: string): Extended; Функция вычисляет результат математического выражения, заданного параметром Formula. Для вычислений используется объект типа TRxMathParser.
#12 by NS
Нет, я не погорячился. С IAm-ом писали на время, на 1С. Можно наверно найти в архивах. + Она была дана на собеседовании в одну крупную западную фирму более 10 лет назад. Всего вместе с ней было 4 задачи, отводилось 4 часа. + Она была на сборах на союз от Питера в 89/90-ом году, отводился на неё так-же час. Простейший вариант звучит так - дано скобочное выражение с четыремя арифметическими операциями, приоритет у "/" и "*" выше чем у "+" и "-". 1. Разложить его в последовательность операций. 2. Посчитать это выражение.
#13 by TDV
Спасибо
#14 by Еврейчик
когда я учился в  институте на первом курсе, нам задавали делать такие лабораторные работы. За час-два сделать запросто. Там надо стек использовать. Многие, кто тут сидят даже не знают что такое стек и как програмно его реализовать, однако есть и такие, которые помнят старый добрый ассемблер Push, Pop рулят.
#15 by ado
Ну, только с арифметикой и без переменных за час пожалуй можно управиться, если поднапрячся. Алгоритм на самом деле не сложный. Бесскобочное и бесприоритетное выражение посчитать легко. А потом, ищем первую закрывающуюся скобку, от нее идем назад до первой открывающейся, вырезаем то, что между ними, считаем, подставляем на место выражения в скобках. А приоритет можно учесть заключением умножений/делений в допоннительные скобки.
#16 by ado
Можно и без стека.
#17 by Cthulhu
Шаблон уже разучился вычислять выражения???
#18 by Immortal
стек можно реалтзовать и на  1с, не надо ля ля. Просто стек сам по себе малоэффективен, поэтому и не используется.
#19 by NS
Рекурсия либо стек. Рекурсия удобней. Самое главное - процедура Открывающая_Скобка
#20 by Иде я
Хех, а ведь делал что-то подобное на первом курсе на паскале...от ведь времена были. Программировали за идею, ане за бабло. Век идеалов и душевной свободы был...
#21 by Собеседник
Ни хрена не понял... Упс - я уже опоздал
#22 by NS
Это не разбор скобочного выражения.
#23 by Кириллка
хз зачем, но пример:
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С