Помощь - Поиск - Пользователи - Календарь
Полная версия: Дерево арифметических выражений
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
cinic
Требуется преобразовать выражение-строку в выражение-дерево, упростить дерево-выражение, раскрыть скобки по данным условиям и вывести полученное выражение на печать.

Соответственно, условия:
(a+-b)*c=(a*c)+-(b*c)
с*(a+-b)=c*a+-c*b
L(a*b)=(La+Lb)
L(a/b)=La-Lb
E(a+b)=Ea*Eb
E(a-b)=Ea/Eb
C(a+-b)=(Ca*Cb)-+(Sa*Sb)
S(a+-b)=(Sa*Sb)+-(Ca*Cb)
и так далее

Ув. гуру, подскажите, как реализовать непосредственно сокращение дерева? Зарание спасибо.
volvo
cinic,
во-первых, поскольку ты спрашиваешь
Цитата
подскажите, как реализовать непосредственно сокращение дерева?
, можно сделать вывод, что ты уже реализовал преобразование строки в дерево? Тогда приведи, пожалуйста если не весь код, то ХОТЯ БЫ структуру, описывающую дерево (чтобы было понятно, КАК ты его хранишь)...

Это первое. А второе - можешь нарисовать здесь ДЕРЕВО, получающееся у тебя при переводе выражения:
a * (2 * b + 3) - b * (a * 2 - 4)
?
(как я понял, в результате должно получиться 3 * a + 4 * b?)
cinic
Прошу прощения за беспокойство unsure.gif , но программу я написал, вроде работает. На всякий случай, вот то, что у меня получилось:

" (Показать/Скрыть)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.