Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Сообщ.
#1
,
|
|
|
Прошу прощения, т.к. вопрос, вроде бы, простой. Однако уже 2 дня у меня ничего не идет.
Вопрос: есть строка, которую нужно высчитать, т.е. нужен калькулятор. Строка может быть простая: 5, а может и : -(5/8-6)*4552,1-(45-7*5)+2,1/(1-2)*1,5+8 Уже выкачал несколько исходников: но... 1) от DN - большой, разбираться как-то, не очень. 2) второй очень маленький. Все считал. Однако заткнулся на (1-2)*(4+5) - двойных выражениях. 3) в третьем (93 стр.) - самом маленьком я ничего не разобрался. умнО написано. 4) .... Киньте, если не в тяжесть, мне небольшие исходники на goby@mail.ru. Или хоть URL |
Сообщ.
#2
,
|
|
|
а этот смотрел ?
/delphi/delphi_convert_string_to_math.shtml Если смотрел, то извини. |
Сообщ.
#3
,
|
|
|
Есть исходник крутого калка, правда на С.
(Точнее на Yacc'е, lex'е ктотрые генерируют Сишный код калькулятора) но работает с переменными и со скобками любой вложенности, а так-же может обрабатывать файлы с выражениями внутри. |
Сообщ.
#4
,
|
|
|
есть три исходника
1) на паскале, через строки. то есть выделяем внутренние скобки, высчитываем их, заменяем текст в строке, который им сответствовал на их значение. (переконверченное в текст) потом также для всех операций умножения и деления. потом оствашуюся строку из цисел и знаков +- просто считаем. глючно что результат промежуточных выражений записываем обратно в строку. 2)на с++, функциями рекурсивными. самы стандартный и распространенный вариант. работает даже с переменными. 3) на с++. конвертим строку с вегерскую запись (например 1+2->1 2 +) используя стек высчитываем эту строку. наверное самый быстрый. тебе какой слать. |
Сообщ.
#5
,
|
|
|
А это смотрел:
http://pascal.sources.ru/parsing/swexpr.htm http://pascal.sources.ru/parsing/calc_s.htm http://pascal.sources.ru/parsing/bpc-sec.htm http://pascal.sources.ru/parsing/2x2_12.htm http://pascal.sources.ru/parsing/eval.htm http://pascal.sources.ru/parsing/mcal.htm http://pascal.sources.ru/parsing/calc.htm http://pascal.sources.ru/parsing/calc_my.htm http://pascal.sources.ru/parsing/2x2_13.htm http://pascal.sources.ru/parsing/calk.htm http://pascal.sources.ru/parsing/pars.htm |