| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C] Различные нотации записи выражений |
| Автор: Kronit 19.11.2006, 13:01 | ||
| Здравствуйте. У меня такое задание. Мне нужно перевести выражение из префиксной записи в обратную польскую (т.е, например, +a*bc --> bc*a+ ). Я так понимаю, что польская обратная запись - это просто постфиксная запись. Я даже понимаю, что мое изначальное выражение (в преф. записи) нужно просто переписать в обратном порядке (в постф. запись). Естественно со всеми проверками на корректнось введенного префиксного выражения. Только символы, не являющиеся знаками, переписать надо в обратном порядке, но не меняя их местами...т.е. как bc не меняются на cb в моем примере. Надеюсь Вы поняли..) только у меня проблема. Как переписать выражение в обратном порядке - это эллементарно. Но вот как при этом не менять местами символы, не равные знаку? выбрать их можно:
а что дальше? буду ждать ваших предложений. Заранее спасибо. |
| Автор: Sartorius 19.11.2006, 13:57 |
| Выбирай из входной строки подстроки разделенные знаками начиная с конца. Потом их целиком в выходную строку скидывай. |
| Автор: Kronit 19.11.2006, 17:52 | ||||
Только я не совсем понимаю как это сделать...делать так:
Но только так в массиве b будут все символы-незнаки подряд и в обратном порядке... А как вбивать в отдельные массивы? сколько массивов создавать? я же не знаю сволько будит этих блоков символов между знаками. |
| Автор: Partizan 20.11.2006, 15:58 |
| strrev() не поможет? |
| Автор: Kronit 20.11.2006, 16:31 | ||
Впринципе переписать строку в обратном порядке так действительно проще, чем через цикл for. Но мне же надо чтобы символьные подстроки(не знаки) не менялись местами. теперь мне надо чтоб строка: +abc*ab была переписана в строку +cba*ba. Тогда после strrev() у меня и получится нужная строка ab*abc+ как мне буквы поменять местами? |
| Автор: Partizan 20.11.2006, 18:19 |
| разбить строку на токены с пом strtok()...в качестве символов-разделителей взять символы арифметических операций и для каждой полученной подстроки сделать strrev.... нерационально, но работать должно... |
| Автор: Partizan 20.11.2006, 18:49 |
| с помощью strtok всё становится совсем просто... |
| Автор: Partizan 20.11.2006, 21:55 | ||
держи вот...написал пока делать нечего было...
|
| Автор: Kronit 20.11.2006, 23:09 | ||||
Оки...спасибо выручил..щас буду разбираться. Правда я на С пишу, но думаю Сpp тоже пойму. |