![]() |
|
Модераторы: bsa |
![]()
|
|
| Колесо |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.12.2011 Репутация: нет Всего: нет |
Здравствуйте. Нужно написать функцию перевода из инфиксной в постфиксную нотацию. Т.е. например, "5+4*2/1-4" записать как "5421/*+4-" Составил следующий код, но он почему то не делает то, что нужно. в чем ошибка?
Это сообщение отредактировал(а) Колесо - 18.12.2011, 09:21 |
|||
|
||||
| rumit7 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: нет Всего: 7 |
Ну вот, например здесь:
С чего Вы решили, что все 70 элементов из стека нужно вытаскивать?! И потом, на мой взгляд, лучше было бы не размазывать операции над стеком по всему коду, а оформить его как отдельную сущность. Например так:
Я так понял Вам нужно на Си, поэтому и ввел bool_t. На С++ все-же по другому пишут. Ну и код я много не тестил, и еще хорошо бы добавить поддержку операций "(", ")", унарный "+" и "-". |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Код у вас весьма туманен и местами неправилен (в частности в строке 52 предполагается, что в стеке операция есть как минимум 2 операции, что для самой первой операции явно не так)
Погуглите по словам 'рекурсивный нисходящий парсер' (а лучше Recursive descent parser ) |
|||
|
||||
| rumit7 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.6.2011 Репутация: нет Всего: 7 |
Как я понял, вот здесь объясняется очень даже ничего, плюс рабочий С++ код. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |