|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexey Moiseev 2:5009/5.31 11 May 2002 14:16:17 To : Alexander Kolosov Subject : Парсер математических выражений -------------------------------------------------------------------------------- AM> Обратная польская нотация. Лучше всего имхо делать с ней. AK> Я, конечно, в инете посмотрю, но можно немного поподробнее о том что AK> такое польская нотация. Оно в разных источника называется по-разному. Есть такая книга: А. Ахо, Р. Сети, Д. Ульман "Компиляторы, технологии, инструменты". Она построена так что там дается в широчайшем обьеме теория, и идет построения компилятора, сначала элементарнейшего (1-ый - делает из инфиксной формы - постфиксную - как раз то что тебе нужно), затем идет усложнения сего алгоритма. Книга дорогая но она того стоит. Теперь к главному: к примеру есть выражение "a+b" в постфиксной форме будет выглядет так "ab+" Кроме того уже не нужны скобки: (a+b)*c-d -> ab+c*d- a-(b+c) -> abc+- ^^^^^ сначало сложить числа b и c затем то что получилось отнять от чилса a. С чилами придется использовать разделители между числами (если конечно программа не расчитана только на цифры), например пробелы или "|" Знаки математических опреаций - опреаторы, числа - операторы. P.S.: вообще я в свое время делал программу которая с учетом приоритета опреаций вычисляет результат выражения, но она примитивная: нет скобок и логических операций. Если надо могу кинуть. Alexey. --- F.I.P.S./32 v1.0r W95/NT [M] * Origin: Team [Чудеса науки] (2:5009/5.31) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/27553cdcef71.html, оценка из 5, голосов 10
|