Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Дерево арифметических выражений

Автор: cinic 28.05.2006 13:54

Требуется преобразовать выражение-строку в выражение-дерево, упростить дерево-выражение, раскрыть скобки по данным условиям и вывести полученное выражение на печать.

Соответственно, условия:
(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 28.05.2006 14:26

cinic,
во-первых, поскольку ты спрашиваешь

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

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

Автор: cinic 28.05.2006 23:56

Прошу прощения за беспокойство unsure.gif , но программу я написал, вроде работает. На всякий случай, вот то, что у меня получилось:

" (Показать/Скрыть)