Автор
|
Тема: Калькулятор
|
Vladimir |
опубликован 22-11-2000 17:41 MSK
Прошу прощения, т.к. вопрос, вроде бы, простой. Однако уже 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
|
purpe
|
опубликован 22-11-2000 17:48 MSK
а этот смотрел ? /delphi/delphi_convert_string_to_math.shtmlЕсли смотрел, то извини.
|
LexX80
|
опубликован 13-11-2000 13:53 MSK
Есть исходник крутого калка, правда на С. (Точнее на Yacc'е, lex'е ктотрые генерируют Сишный код калькулятора) но работает с переменными и со скобками любой вложенности, а так-же может обрабатывать файлы с выражениями внутри. |
Demo_S
|
опубликован 18-11-2000 01:38 MSK
есть три исходника 1) на паскале, через строки. то есть выделяем внутренние скобки, высчитываем их, заменяем текст в строке, который им сответствовал на их значение. (переконверченное в текст) потом также для всех операций умножения и деления. потом оствашуюся строку из цисел и знаков +- просто считаем. глючно что результат промежуточных выражений записываем обратно в строку. 2)на с++, функциями рекурсивными. самы стандартный и распространенный вариант. работает даже с переменными. 3) на с++. конвертим строку с вегерскую запись (например 1+2->1 2 +) используя стек высчитываем эту строку. наверное самый быстрый. тебе какой слать. |
Valery Votintsev
|
опубликован 18-11-2000 17:51 MSK
А это смотрел: 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
|