Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Еще один вариант MathParser'a


Автор: quard 24.3.2006, 20:18
В отличие о моей первой версии которую я здесь когда-то выкладывал этот Parser имеет ряд
дороботок и новых возможностей smile

PS: В скором времени я планирую добавить поддержку больших чисел; Вывод формулы на DC ...

Описание:
1) Список функций:
Код

  function SetVar(MathStr: string; MathVar: Char; Value: Extended): string; // Устанавливает значение переменной
   function Calc(var MathStr: string): boolean; // Собственно глав. функция
// И еще
   procedure RegisterFunction(Name: string; ArgsCount: integer; Address: PMathFunc);
   procedure UnregisterFunction(Name: string);
   function GetFuncsCount: integer;
   function GetFuncInfo(Index: integer; var Name: string; var ArgsCount: integer): boolean;
// И некоторые  др....

2) Допустимые символы:
^ * / + - = < > ! % : ! | ()
Разделение параметров: ";"
3) Список фунций:
abs
sqrt
factorial
exp
pi()
e()
log(Основание; X)
ln
mean(x1; x2; x3 ... )
min (x1;x2;x3 ...)
max
rnd(От;До; prm1) если prm1 - 0 то Обычное распределение 2 - расп. Паскаля. 3 Гаусса| без параметров - случайное число
sin
cos
tg
ctg
sec
cosec
arcsin
arccos
arctg
arcctg
arctg2
arcsec
arccosec
sinh
cosh
tgh
ctgh
sech
cosech
arcsinh
arccosh
arctgh
arcctgh
arcsech
arccosech
hypot
percent - используйте вместо функции знак "%"
not
and
or
xor
shl
shr
div
mod
round
int
frac
r2g - RadianToGrad
r2d
r2c
g2r
d2r
c2r - СycleToRadian
3)
!!rdx (Val, hOld, hNew) - перевод из любой сис. счисления (от 2 до 16) в люб. сис счисления (от 2 до16).

Пример
sin(d2r(90) * pi()) > 0
sin(3)=cos(3) Если <> то ответ - 0, иначе - 1
rdx(111011; 2; 16)

Моё мыло ant-x@mail.ru - пишите!

Автор: SoWa 24.3.2006, 20:41
Хорош! А вообще это в Арсенал Форумистов.
PS А я за конечные автоматы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)