форум друзей сайта Zakat.ru

форум друзей сайта Zakat.ru (http://f.pomni.com/index.php)
-   Компьютерный (http://f.pomni.com/forumdisplay.php?f=29)
-   -   "Польская запись" (http://f.pomni.com/showthread.php?t=12056)

Ukrajinec 29-05-2008 05:53 PM

"Польская запись"
 
Нужна помочь! мне нужно написать прогу что переводит арифметическое выражение в польскую запись (польский запис укр.), а ни я ни мои знакомые об это ничего не знают впрытык... ЧТО ЭТО? Как она из себя выглядит эта запись? Народ помогите а то я зашел в тупик =((

Orlenka 29-05-2008 06:08 PM

Обра́тная по́льская нота́ция (ОПН) (Обратная польская запись, Постфиксная нотация, Бесcкобочная символика Лукашевича, Польская инверсная запись, Полиз) — форма записи математических выражений, в которой операнды расположены перед операторами.

Описание

Отличительной особенностью обратной польской нотации является то, что все аргументы (или операнды) расположены перед знаком операциии. В общем виде запись выглядит следующим образом:

Запись набора операций состоит из последовательности операндов и знаков операций. Операнды в выражении при письменной записи разделяются пробелами.
Выражение читается слева направо. Когда в выражении встречается знак операции, выполняется соответствующая операция над двумя последними встретившимися перед ним операндами в порядке их записи. Результат операции заменяет в выражении последовательность её операндов и её знак, после чего выражение вычисляется дальше по тому же правилу.
Результатом вычисления выражения становится результат последней вычисленной операции.
Например, рассмотрим вычисление выражения 7 2 3 * - (эквивалентное выражение в инфиксной нотации: 7-2*3).

Первый по порядку знак операции — «*», поэтому первой выполняется операция умножения над операндами 2 и 3 (они стоят последними перед знаком). Выражение при этом преобразуется к виду 7 6 - (результат умножения — 6, — заменяет тройку «2 3 *»).
Второй знак операции — «-». Выполняется операция вычитания над операндами 7 и 6.
Вычисление закончено. Результат последней операции равен 1, это и есть результат вычисления выражения.
Очевидное расширение обратной польской записи на унарные, тернарные и операции с любым другим количеством операндов: при использовании знаков таких операций в вычислении выражения операция применяется к соответствующему числу последних встретившихся операндов.

Особенности обратной польской записи следующие:

Порядок выполнения операций однозначно задаётся порядком следования знаков операций в выражении, поэтому отпадает необходимость использования скобок и введения приоритетов и ассоциативности операций.
В отличие от инфиксной записи, невозможно использовать одни и те же знаки для записи унарных и бинарных операций. Так, в инфиксной записи выражение 5 * (-3 + 8) использует знак «минус» как символ унарной операции (изменение знака числа), а выражение (10 - 15) * 3 применяет этот же знак для обозначения бинарной операции (вычитание). Конкретная операция определяется тем, в какой позиции находится знак. Обратная польская запись не позволяет этого: запись 5 3 - 8 + * (условный аналог первого выражения) будет интерпретирована как ошибочная, поскольку невозможно определить, что «минус» после 5 и 3 обозначает не вычитание; в результате будет сделана попытка вычислить сначала 5 - 3, затем 2 + 8, после чего выяснится, что для операции умножения не хватает операндов. Чтобы всё же записать это выражение, придётся либо переформулировать его, либо ввести для операции изменения знака отдельное обозначение, например, «±»: 5 3 ± 8 + *.
Так же, как и в инфиксной нотации, в ОПН одно и то же вычисление может быть записано в нескольких разных вариантах. Например, выражение (10 - 15) * 3 в ОПН можно записать как 10 15 - 3 *, а можно — как 3 10 15 - *
Из-за отсутствия скобок обратная польская запись короче инфиксной. В случае реализации вычислений в этой нотации в автоматических вычислительных устройствах (калькуляторах) это повышает скорость работы за счёт уменьшения количества нажимаемых клавиш.

Подробнее

Ukrajinec 29-05-2008 10:00 PM

Спасибо красавица! Мог бы дотянутса - розцеловал бы! =) @}->-- @}->-- @}->--

Joka 29-05-2008 10:06 PM

Орленка все знает!
Умная блин!

Orlenka 31-05-2008 10:49 AM

э.... не буду присваивать чужую славу. в данном случае помог гугл (он на википедию выводит ибо соглашение у них)


Часовой пояс GMT +4, время: 02:49 AM.

vBulletin® 3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Перевод: RSN-TeaM (zCarot)