|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.06.2007, 09:22 | #1 |
Регистрация: 18.06.2007
Сообщений: 4
|
Обратная польская нотация
ПОМОГИТЕ ПЛЗЗЗ..... написать программу на Delphi (с формой!!!) про обратную польскую нотацию!!!! ПОЖАЛУЙСТА И СПАСИБКИ ЗАРАНЕЕ... ЭТО ОЧЧЧЕНЬ ВАЖНО...........
|
20.06.2007, 09:29 | #2 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Life is too short, play more...
Как правильно задавать вопросы |
20.06.2007, 09:40 | #3 |
Регистрация: 18.06.2007
Сообщений: 4
|
Использyется для вычисления аpифметических выpажений. Для
пеpевода в нее необходим стек аpифметических опеpаций. Алгоpитм пеpевода пpоизвольного выpажения в ОПH очень пpост: Выpажение сканиpyется слева напpаво, пpи этом pазбиваясь на токены - числа и знаки аpифметических опеpаций. Если очеpедной токен - число, не глядя пишем его в выходнyю стpокy. Иначе, выталкиваем из стека и пишем в выходнyю стpокy все опеpации с пpиоpитетом выше текyщей, а самy опеpацию пихаем в стек. Левая скобка всегда пишется в стек (ее пpиоpитет - самый низкий). Пpавая скобка выталкивает из стека все опеpации вплоть до левой скобки включительно, сама она в стек не пишется. Когда достигнyт конец входного выpажения, пpосто выталкиваем из стека все что в нем есть. Пpимеp: (2+3)*4+5 левая скобка - пихаем в стек 2 - пишем в выходнyю стpокy + - стек пyст, поэтомy ничего не достаем, а напpотив, пихаем плюс 3 - пишем в выходнyю стpокy пpавая скобка - выталкиваем плюс и левyю скобкy * - стек снова пyст, пихаем yмножение 4 - пишем в выходнyю стpокy + - пpиоpитет yмножения - выше, поэтомy его достаем, а плюс - пихаем 5 - пишем в выходнyю стpокy EOF - достаем из стека плюс Имеем: 2 3 + 4 * 5 + Обpати внимание на следyющее: - Вместо записи в выходнyю стpокy можно тyт же вычислять выpажение, для этого необходим еще один стек (почемy - сообpази сам) - Если выталкивать из стека опеpации с пpиоpитетом выше или pавным текyщемy, то выполнение опеpаций с одинаковым пpиоpитетом бyдет пpоизводиться слева напpаво, т.е. как все мы пpивыкли, да и его глyбина yменьшиться (хоть это и не кpитично) - Скобки в выходнyю стpокy не пишyтся, так как их пpиоpитет yчитывается автоматически; однако их баланс легко пpовеpяется. |
20.06.2007, 22:24 | #4 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
как вы правильно заметили: можно тутже вычислять текущее действие.
Сначала надо определить приоритеты арифметических действий, а затем выполнять их в этойже последовательности в виде цикла, причем заменять 2 значения результатом. Будет так(по вашему примеру): ///////////////////////////////////// (2+3)*4+5 {строка задана} 5*4+5 {выполнили операцию в скобках, и заменили на результат} 20+5 {выполнили операцию *, и заменили на результат} 25 {выполнили операцию +, и заменили на результат} /////////////////////////////// Посмотрите приложенный файл (Delphi), писал как-то прогу для расчета 1-го арифметического действия. Доработав ее можно выполнить вашу задачу. (Мне этим заниматься сейчас некогда, буду рад, если кто-то осуществит описанное выше). -=2=- Есть другой вариант: есть готовые компоненты вычисления арифметических операций.
Life is too short, play more...
Как правильно задавать вопросы |
21.09.2011, 20:51 | #5 |
Новичок
Джуниор
Регистрация: 21.09.2011
Сообщений: 5
|
Обратная польская нотация
Помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
Мне нужно =>>Разработать программу получения обратной польской записи арифметических выражений, составленных из однобуквенных идентификаторов, открывающей и закрывающей скобок и операций: +, –, /, *, ^ (возведение в степень). Алгоритм перевода, предложенный Э. Дейкстрой, основывается на использовании стека с приоритетами. Все символы операций и скобки имеют определенный приоритет. Для по-строения польской записи продвигаются вдоль выражения слева направо. Операнды пере-писываются в выходную строку, а операции запоминаются в стек. Если приоритет поме-щаемой в стек операции меньше приоритета операции, находящейся в вершине стека, то происходит выталкивание операций из стека по одной до тех пор, пока в вершине не ока-жется операция с меньшим приоритетом или стек не окажется пустым. Закрывающая скоб-ка вызывает выталкивание всех символов до открывающей скобки (скобки в выходное вы-ражение не переписываются). Операции имеют следующие приоритеты: Операция ( +,– *,/ ^ Приоритет 0 1 2 3 Нужно написать программу на любом языке программирования... ПОМОГИТЕ ПОЖАЛУЙСТА КТО МОЖЕТ....! |
21.09.2011, 21:01 | #6 |
Новичок
Джуниор
Регистрация: 21.09.2011
Сообщений: 5
|
Обратная польская нотация
Операция->Приоритет
0->( 1->+,- 2 ->*,/ 3->^ Помогите прошу, пожалуйстаааааааааааааааааа |
21.09.2011, 21:25 | #7 |
Негодник
Форумчанин
Регистрация: 10.11.2009
Сообщений: 880
|
Как сказано в Библии:"Просящему, да воздастся".
Держи, но как ты её будешь объяснять преподавателю - проблема твоя (Я сам уже не помню, что там и как). Писалась на делфи.
Если помог, проси поставить минус. Будь оригинален!
Последний раз редактировалось Rin; 21.09.2011 в 21:27. |
22.09.2011, 14:41 | #8 |
Новичок
Джуниор
Регистрация: 21.09.2011
Сообщений: 5
|
cпасибочки большое!!!выручил!!!
|
22.09.2011, 14:54 | #9 |
Новичок
Джуниор
Регистрация: 21.09.2011
Сообщений: 5
|
Лабораторная работа № 2 СОРТИРОВКА И ПОИСК
Помогите кто может, пожалуйстааааааааааа!!!
Необходимо запрограммировать различные алгоритмы сортировки и поиска, оформив их в виде подпрограмм. Тип информационной структуры обозначен цифрами 1 и 2, которые обозначают линейный список с последовательным и связанным распределением соответственно. Бинарное дерево обозначено цифрой 3. Структура записей и содержимое ключей выбрать произвольным, № варианта ->1 , Алгоритм->Сортировка подсчетом, Тип информационной структуры -> 1 Очень нужноооооооооооооо!!! |
22.09.2011, 14:57 | #10 |
Новичок
Джуниор
Регистрация: 21.09.2011
Сообщений: 5
|
я твой должник!!!
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обратная матрица (nxn) | Albenous | Общие вопросы Delphi | 12 | 27.05.2009 02:17 |
Delfi7 обратная функция Char | mentholl | Помощь студентам | 5 | 03.06.2008 10:25 |
CreateFile - считывание дискеты в файл и обратная запись на нее... | kalexi | Win Api | 1 | 01.10.2007 19:56 |
Обратная польская нотация | Sexy Fox | Помощь студентам | 2 | 22.06.2007 13:27 |
Обратная связь | Oliany | PHP | 1 | 06.05.2007 23:40 |