Перевод арифметических выражений в Обратную Польскую Запись (ОПЗ)

Апрель 23, 2009 / Автор AlexR / Рубрики Программирование / Комментировать

Преобразование выражения в ОПЗ с использованием стека

Нам понадобится стек для переменных типа char, т.к. исходное выражение мы получаем в виде строки. Рассматриваем поочередно каждый символ:

1. Операнд (число, идентификатор) сразу помещаем в ОПЗ.

2. «(» знак открывающейся скобки сразу помещаем в стек.

3. Арифметические операторы «+», «-«, «*», «/», то тут уже требуется выталкивать из стека операторы  ОПЗ до тех пор, пока приоритет текущего будет выше, либо равен приоритету оператора, который находится на вершине стека.

4. «)» знак закрывающейся скобки. В этом случае выталкиваются все арифметические операции до первой открывающейся скобки включительно, при этом открывающаяся скобка в ОПЗ не идет, равносильно закрывающейся.

5. Когда все эти операции проделаны (или встретился конец выражения), если стек не пустой, то из него извлекаются все арифметические операции, пока он таковым не окажется.

Под словом приоритет арифметических выражений имеется ввиду порядок его действия. Например у скобки приоритет равен 0, у сложения и вычитания — 1, а у умножения и деления — 2.

В текущей программе возможен ввод символа степени «^».

Программа написана в PascalABC 3.0, но проверялась и на простом Turbo Pascal. Проблем не было.

Ссылка для скачивания: Перевод арифметического выражения в ОПЗ
Вернуться назад

3 комментария к “Перевод арифметических выражений в Обратную Польскую Запись (ОПЗ)”

Комментарии

  1. ЮЗЕР

    БОЛЬШОЕ СПАСИБО)

  2. Vit (http://soft-buy.ru/)

    Ссылка на файл битая, перезалейте пожалуйста

  3. Дим[{a

    Спасибо огромное создателю прога супер)

Комментарии