Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод алгебраического выражения из префиксной формы в инфиксную PASCAL

5.1K
09 мая 2007 года
saturn61
108 / / 25.10.2006
Собственно задача звучит как заголовок темы: нужно перевести из префиксной формы в инфиксную, т.е. если дано abc+*, то должны получить a*(b+c)

Форумчане, спасайте, у меня уже мозг плавиться.
622
09 мая 2007 года
nilbog
507 / / 19.12.2006
вот ловите идею
первое что в голову пришло
представляете в двоичное дерево
а дальше вывод рек алгоритмом
левая ветка знак правая ветка
если вывести как префиксную то сначала знак потом левую потом правую и тп
но наверно можно и проще )))
сейчас некогда думать
вот тут еще почитайте
http://algolist.manual.ru/syntax/
5
10 мая 2007 года
hardcase
4.5K / / 09.08.2005
Элементарно делается через стек.
Ползёшь слева направо по своему выражению в постфиксной форме (abc+* это постфиксная) если следующий элемент - опреранд, толкаешь его в стек, если операция - вынимаешь из стека её операнды (один или два - в зависимости от типа) и загружаешь на стек "результат" выполнения операции (это может быть дерево или просто строка). В конце работы алогритма у тебя будет на стеке единственный элемент - финальное дерево или строка.


Для префиксного выражения (*a+bc) делается без стека, так как мы знаем, какие операнды идут за каждой конкретной операцией.
5.1K
11 мая 2007 года
saturn61
108 / / 25.10.2006
Спасибо за помощь))))) Всетаки через стек сам допер, это ж блин элементарно оказывается.
622
11 мая 2007 года
nilbog
507 / / 19.12.2006
ага - можно еще через рекурсию в принципе
но тут даже наверно мы не выйграем в простоте
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог