- •Список требований заказчика
- •Программа-генератор
- •Программа-вычислитель
- •Функциональная спецификация Программа-генератор polgen.Exe
- •Программа-вычислитель polsolve.Exe
- •Проектная спецификация Программа-генератор polgen.Exe
- •Программа-вычислитель polsolve.Exe
- •Эксплуатационная документация к программе-генератору polgen.Exe
- •К программе-вычислителю polsolve.Exe
- •Код программы Программа polgen.Exe Файл maincode.Cpp
- •Программа polsolve.Exe Файл maincode.Cpp
Проектная спецификация Программа-генератор polgen.Exe
В качестве контейнера для хранения выражения в польской нотации используется deque<string>. В процессе вычисления применяется структура dcell { string; bool; } и дэк deque<dcell>. Это необходимо для алгоритма конвертирования из СДНФ в базис со стрелкой Пирса.
Программа состоит из нескольких функций:
void main (int argc, char* argv[]) – основная функция, точка входа программы
string parseargs (char *args[], int argcount) – функция конвертирования массива параметров командной строки к более удобному для анализа и использования типу
bool checkparams (string argarr, int argcount) – функция проверки корректности параметров командной строки
bool checkfunct (string str, int argcount) – функция проверки корректности вектора-функции, введенной пользователем
deque<string> buildSDNF (string funct, string argarr) – функция построения СДНФ для заданной вектор-функцииы
void toNORbase (deque<string> &mydeq) – функция конвертирования СДНФ в логическое выражение со стрелкой Пирса
Программа-вычислитель polsolve.Exe
В качестве контейнера для хранения выражения в польской нотации будет использоваться deque<string>.
Состоит из нескольких функций:
void main (int argc, char *argv[]) – основная функция, точка входа программы.
deque<string> inputsplit (string paramstr) – функция формирования из строковой входной последовательности дэка
bool roughcheck (deque<string> &srcdeq, string argarr) – функция проверки выражения и параметров командной строки
string parseargs (char *args[], int argcount) – функция конвертирования массива параметров командной строки к удобному для анализа типу
void evaluate (deque<string> &srcdeq, string argarr) – функция вычисления выражения
string NOR (string a, string b) – функция, возвращающая результат действия стрелки Пирса на оба её параметра.
Эксплуатационная документация к программе-генератору polgen.Exe
Необходимо запустить программу, указав в параметрах командной строке после названия программы имена переменных, для которых будет построено выражение. Например:
Polgen.exe x1 x2
Это запуск программы-генератора для булевой функции от двух переменных – x1 и x2.
Далее необходимо ввести саму вектор-функцию, которая состоит только из нулей и единиц. Наличие других символов будет трактоваться программой как некорректный ввод.
Следует иметь в виду, что количество разрядов вектор-функции должно равняться двойке в степени количества переменных. Иначе программа выдаст ошибку и завершит работу.
Когда вектор-функция введена, достаточно нажать Enter, чтобы получить результат.
К программе-вычислителю polsolve.Exe
При запуске программы необходимо указать в параметрах командной строки после названия программы имена и значения переменных, например:
Polsolve.exe x1=1 x2=0
Это запуск программы-вычислителя для булевой функции от двух переменных – x1 и x2.
После этого вводится выражение в обратной польской нотации в базисе со стрелкой Пирса. Важно, чтобы имена переменных, указанных в параметрах при запуске программы, совпадали с именами переменных, фигурирующих в выражении. Иначе ввод считается некорректным и программа завершает свою работу.
Когда выражение введено, то после нажатия Enter в консоль выводится результат вычисления. Например:
Для совместной работы двух программ можно использовать возможности командной строки Windows по перенаправлению потоков ввода/вывода. Таким образом, можно программе-генератору послать параметры и вектор-функцию, далее полученное выражение автоматически подается на вход программе-вычислителю, затем на экран выводится результат вычисления с заданными программе-вычислителю значениями переменных. Например:
