Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2012, 00:54   #1
[COOLER]
 
Аватар для [COOLER]
 
Регистрация: 02.01.2010
Сообщений: 5
Вопрос Построение дерева из постфиксного арифметического выражения. (Pascal[консольный режим Delphi])

Здравствуйте!
У меня задача: преобразовать арифметическое выражение в бинарное дерево. Для удобства я привёл это выражение к постфиксному виду и храню его в стеке.
(x+a)*(x-b)+3 ---> xa+xb-*3+.
Вызываю эту процедуру в главной программе, но подаю дерево, которое уже хранит "+" в корне, то есть стек выглядит, как "xa+xb-*3". Ну и применяю печать дерева. В итоге программа строит дерево лишь отчасти правильно, то есть половину символов берёт из стека, половину из кучи. Проходя по строчкам обнаружил, что в результате выполнения моего рекурсивного алгоритма программа неверно делает "шаг назад", после построения связки "-"-"b"-"x": программа опять идёт в "-" и заново создаёт правого и левого потомка. В чём моя ошибка? Или, может, я усложняю задачу и всё решается проще, вообще без постфикса? Подскажите, пожалуйста.
Код:
Procedure FunnyAdd(var t:TTree; var s:stack);
begin
  while not stack_is_empty(s) and (t^.info in Znaki) do
    begin
      new(t^.right);
      t^.right^.info:=stack_pop(s);
      FunnyAdd(t^.right,s);
      new(t^.left);
      t^.left^.info:=stack_pop(s);
      FunnyAdd(t^.left,s)
    end
end;
Znaki - множество знаков ['+','-','*','/']
[COOLER] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дерево арифметического выражения Cannibal Помощь студентам 6 15.05.2011 17:18
Построение арифметического выражения. Arugin Помощь студентам 5 16.03.2009 09:49
Delphi(консольный режим) спрятать окно Air Помощь студентам 4 02.07.2008 14:21
Загрузка из файла (консольный режим Делфи) adwaer Помощь студентам 3 30.06.2008 15:55