ПрограмматАУраспознаватель арифметических выражений

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



приоритет o1 меньше либо равен приоритету оператора, находящегося на вершине стекатАж

тАж (если оператор o1 право-ассоциированый) приоритет ''''' меньше приоритета оператора, находящегося на вершине стекатАж

тАж выталкиваем верхние элементы стека в выходную строку;

) помещаем оператор o1 в стек.

* Когда входная строка закончилась, вытолкнуть все символы из стека в выходную строку. В стеке должны были остаться только символы операторов; если это не так, значит в выражении не согласованы скобки.

2. Практическая часть

.1 Постановке задачи

В рамках данного курсового проекта необходимо разработать программу - распознаватель арифметических выражений. Для эффективной организации процесса разработки и получения удовлетворительного результата мною были определены следующие требования к программе:

1.Программа должна получать входную информацию в виде строки арифметического выражения, представленного на обычном математическом языке.

2.Программа должна уметь различать приоритетность входных арифметических операций.

.Программа должна уметь вычислять сложные выражения, содержащие в себе несколько математических операторов.

.Программ должна вычислять результат введённого математического выражения.

.Программа должна демонстрировать пользователю этапы выполняемых ею математических операций и промежуточные результаты данных вычислений.

.Программа должна выполняться под управление ОС Windows.

.2 Описание входного языка

Программа разработана в соответствии со следующей спецификацией входной информации:

Входная информация - строка символов, являющаяся правильным математическим выражением, содержащая операнды и операторы.

Набор операторов входного языка приведён в следующей таблице:

Таблица 1

Операторы входного языка

№Обозначение в программеМатематическое обозначениеФункцияПравила использования1. 1++СложениеСкладывает два операнда находящиеся справа и слева от оператора.2. 2--ВычитаниеВычитает из операнда находящегося слева из операнда, находящегося справа от оператора.3. **ПроизведениеУмножает два операнда находящиеся справа и слева от оператора.4. /:ЧастноеДелит операнд, находящейся слева, на операнд, находящейся справа от оператора.5. ^ОснованиеСтепеньСтепеньВозводит операнд, находящийся слева, в степень по операнду, находящемуся справа от оператора

Набор символов входного языка, составляющих операнды, представлен в следующей таблице:

Таблица 2

Символы входного языка

№Обозначение в программеМатематическое обозначениеНаименование1. 11Один2. 22Два3. 33Три4. 44Четыре5. 55Пять6. 66Шесть7. 77Семь8. 88Восемь9. 99Девять10. 00Нольпрограмма распознаватель арифметический выражение

2.3 Описание выходной информации

Выходной информацией данной программы являются следующие данные:

1.Дерево разбора.

2.Результаты промежуточных вычислений.

.Конечный результат.

Дерево разбора представляет собой отображение структуры дерева в табличном виде, для связи родительских веток с дочерними используются специального вида ссылки.

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

Конечный результат представляет собой итог всех операций и является результатом вычисления арифметического выражения.

.4 Алгоритмические аспекты программы

Алгоритм программы представляет собой соединение двух алгоритмов:

1.Построение дерева разбора.

2.Построение выражение по принципу польской префиксной записи.

Первый алгоритм представляет собой построение дерева, представленного в табличном виде, по принципу разности приоритета используемых во входном выражении операндов.

Приоритеты операндов показаны в таблице 3.

Таблица 3

Приоритеты операндов

№ОперандНаименованиеПриоритет выполнения1. +Сложение12. -Вычитание13. *Произведение24. /Деление25. ^Степень3

Кроме того, в набор языка вводиться новый операнд, представляющий цифру, обозначенную с двух сторон кавычками. Данный оператор обозначает ссылку на выражение и символизирует результат вычисления данного выражения. Данный оператор используется во второй части алгоритма в качестве оператора при записи выражения в виде польской префиксной записи.

2.5 Алгоритм программы

Алгоритм программы представлен следующей схемой:

Рисунок 1 - Алгоритм программы

Рисунок 2 - Алгоритм программы

Рисунок 3 - Алгоритм программы

Рисунок 4 - Алгоритм программы

Рисунок 5 - Алгоритм программы

Рисунок 6 - Алгоритм программы

Рисунок 7 - Алгоритм программы

2.7 Работа с программой

Разработанная программа не требует инсталляции. Для её запуска достаточно запустить исполнимый файл. Вид программы предстален на рисунке.

Рисунок 8 - Окно программы.

Верхнее поле предназначено для ввода арифметического выражения.

Рисунок 9 - Введено выражение.

Для запуска процесса распознавания нажмите кнопку выполнить. Программа заполнит дерево разбора узлами с информацией в виде префиксной записи и список промежуточных результатов. В нижнем поле будет результат выражения.

Рисунок 10 - Выполненная программа.

Чтобы очистить поля программы нажмите кнопку очистить.

Заключение

Copyright © 2008-2014 geum.ru   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение