C++ стековый транслятор арифметических выражений
Добавлено: 21 апр 2008, 03:16
Вобщем, курсач у меня с такой темой. Вот, прошу помощи.
Подобные темы видел, но они обычно ссылаются на другие сайты с описанием алгоритмов...теория вобщем
С клавиатуры вводится арифметическое выражение. Написанный транслятор должен перевести всё в польскую запись и, если потом потребуется, вычислить. Всё надо сделать с использованием класса.
вот...перевод в польскую запись то я могу сделать, если вводятся числа, буквы или знаки "+", "-", "/", "*"
Но мне надо ещё и функции(такие как синус и прочее).
Проблема заключается вот в чём:
к примеру ввели:a+(b-c)
в постфиксной форме будет:a b c - +
а если ввести:a+sin(bc)
в постфиксной форме будет:a b c sin +
но вот, если a+sin(b)
как будет ?
ведь когда производится вычисление по польской записи, то по сути берётся правая и левая ветка дерева и вычисляется по арифметическому выражению с вершины
но если будет sin(b), то одна из веток будет пустая
я не прошу кода, просто объясните как можно эту проблему преодолеть
плизз, не глумитесь над моей глупостью, если онная имел место (((x
Заранее спасибо ((:
Подобные темы видел, но они обычно ссылаются на другие сайты с описанием алгоритмов...теория вобщем
С клавиатуры вводится арифметическое выражение. Написанный транслятор должен перевести всё в польскую запись и, если потом потребуется, вычислить. Всё надо сделать с использованием класса.
вот...перевод в польскую запись то я могу сделать, если вводятся числа, буквы или знаки "+", "-", "/", "*"
Но мне надо ещё и функции(такие как синус и прочее).
Проблема заключается вот в чём:
к примеру ввели:a+(b-c)
в постфиксной форме будет:a b c - +
а если ввести:a+sin(bc)
в постфиксной форме будет:a b c sin +
но вот, если a+sin(b)
как будет ?
ведь когда производится вычисление по польской записи, то по сути берётся правая и левая ветка дерева и вычисляется по арифметическому выражению с вершины
но если будет sin(b), то одна из веток будет пустая
я не прошу кода, просто объясните как можно эту проблему преодолеть
плизз, не глумитесь над моей глупостью, если онная имел место (((x
Заранее спасибо ((: