1-я лабораторная работа по Структурам и алгоритмам обработки данных в ЭВМ.
Реализует подсчёт формулы нахождения максимального и минимального элемента из двух заданных ЦИФР.
Применяется структура Stack, написанная с использованием символьного массива.
Основные функции стека написаны преподавателем (Pop(), Push(), Top(), IsEmpty()).
Программа работает с файлом и считывает данные. Результат записывается в другой файл.
-
Задание.
Используя стек, решить следующую задачу. В текстовом файле F записана без ошибок формула следующего вида:
- <формула> ::= <цифра> | М(<формула>, <формула>) | m(<формула>, <формула>)
- <цифра> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9,
где М обозначает функцию max, а m - min. Вычислить как целое число значение данной формулы. Например, М(M(4,5),m(6,M(8,3))). Для реализации АТД Стек использовать массив.
-
Алгоритм решения задачи
- Считать символ из файла;
- В соответствии с функцией (M или m), вызвать данную функцию;
- Продолжать вызывать функцию рекуррентно, пока не встретим цифру;
- Как только встретили цифру, положить её в стек;
- Имея как минимум две цифры в стеке и встретив символ завершения перечисления параметров ‘)’, вынимаем два числа из стека;
- В соответствии с функцией сравниваем полученные два числа;
- Результат сравнения заносим обратно в стек;
- Выходим из функции и продолжаем пункт 3 до тех пор, пока не закончатся все символы завершения перечисления параметров ‘)’.
- Программная реализация
-
- Последовательность действий при программной реализации:
- Задать массив необходимого типа и размера, на котором будет реализована структура данных типа стек.
- Реализовать алгоритм решения поставленной задачи.
- Реализовать основные функции работы со стеком (Push, Pop, IsEmpty, Top).
- Реализовать в главной функции корректное считывание данных из файла;
- Реализовать функции нахождения минимума и максимума между двумя цифрами (M, m).