Просмотр полной версии : Математическое выражение
Здравствуйте все! Я столкнулся с надобностью сделать \ найти исходник такой вот фигни
У нас есть строка
S1 = 'a1=((9*a1+7*a2+1/(4*a3)^2.5)*5a4)^2.5'
как сделать так чтобы она (и другие похожие выражения) выполнялось по всем математическим правилам, сначала все что в скобках, потом операции умножения деления..... исходник не нашел, да и честно говоря не знаю как спросить это НОРМАЛЬНО у гугла. :o
Как я понимаю "^" - возведение в степень.
Соотв "(4*a3)^2.5" можем записать как
Math.pow( (4*a3), 2.5 )
4*a3 - должно быть неотрицательным.
Порядок расстановки скобок и приоритет выполения мат.операций - алгебра 4й класс.
функция не хилая получится много разборов я так понимаю ... + все это надо разбивать на действия.
допустим первым '9*a1' это строка. 9 это константа, a1 - переменная,* - умножение
function действие (s):Number {
возьмем 1 символ. если этот символ число - берем все число целиком через цикл...
если символ равен */+-^
тут через свитч... делаем операцию с числом которое после... получаем f1
возвращаем f1
}
function порядок действия(s){
записываем последовательно в массив все действия.
потом как-то подставляем значения .... из функции "действия"
}
Я понятия не имею каак это делать.
неа. все что у вас написано выше - вполне рабочее выражение. убрать апострофы и заменить ^
Все. не надо функций и прочих извращений.
dark256, похоже человеку нужно это со строкой проделать.
да мне надо эту строку запустить как бы ) можно впринцепе без возведения в степень
drnet_ua
22.12.2010, 15:33
а что должно быть результатом? тру/не тру? :)
или решение експерешна относительно а1?
идем в гугл - третей ссылкой будет почти то что вам нужно (http://www.undefined.ch/mparser/index.html)
но как замечательно что другие умеют пользоватся гуглем вместо вас
=\ там круто =\ но есть 1 но.... АС3 я его не знаю ...
Аааа.... я не понял что требуется написать транслятор :)
Тогда активно читаем про обратную польскую нотацию и тому подобное.
Это уже 2-3-й курс ВУЗа. Контекстно зависимые грамматики, автоматы конечные и бесконечные и в энто я уже вдаваться не стааану :)
drnet_ua
22.12.2010, 19:01
ОФФТОП:
можно мне пробел в знаниях восполнить:
если на ас3 склепать клас, упихать его в swc, то можно его из ас2 использовать?
было-бы вам готовое решение
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.