Xxxcheck.cpp
Лабораторная работа № 5 Студент: Тафинцев Г.М. Группа: 8О-208Б Номер по списку: 14 Вариант: 34 Дата: 13.04.2015 Тема: Конечный автомат. ……………………………………………………………………………………………………………………………………. Краткая формулировка задания В классе tFSMcheck реализовать функцию анализа структуры автомата в соответствии с вариантом задания. Функция tFSMcheck::deadlocks строит множество ВСЕХ «тупиковых» состояний. Состояние автомата считается тупиковым, если из него нет переходов в ДРУГИЕ состояния. Заключительные состояния в это множество НЕ ВКЛЮЧАЮТСЯ. ……………………………………………………………………………………………………………………………………. Набор отчетных документов xxxcheck.cpp #include "fsmcheck.h" using namespace std; tFSM::tStateSet tFSMcheck::deadlocks() { report = "*** Developed by THM ***\n" "deadlocks: "; tFSM::tStateSet invalid; size_t n = fsm.size(); tFSM::tTransMap::const_iterator iter; for(size_t from = 0; from < n; ++from) { if (!(fsm.table[from].empty())) { invalid.insert(from); } for(iter = fsm.table[from].begin(); iter!= fsm.table[from].end(); ++iter) { invalid.insert(iter->second); } } for(size_t from = 0; from < n; ++from){ for(iter = fsm.table[from].begin(); iter!= fsm.table[from].end(); ++iter) { invalid.erase(from); } } return invalid; } int main() { tFSM Afloat; tFSMcheck check(Afloat); //////////////////////////////////// addstr (Afloat, 0, "+-", 1); addstr (Afloat, 2, ".", 3); addstr (Afloat, 4, "Ee", 5); addstr (Afloat, 5, "+-", 6); addrange(Afloat, 0, '0', '9', 2); addrange(Afloat, 1, '0', '9', 2); addrange(Afloat, 2, '0', '9', 2); addrange(Afloat, 3, '0', '9', 4); addrange(Afloat, 4, '0', '9', 4); addrange(Afloat, 6, '0', '9', 7); addrange(Afloat, 7, '0', '9', 7); Ошибки addstr(Afloat, 2, "0", 11); addstr(Afloat, 1, "0", 10); addstr(Afloat, 9, "0", 1); Afloat.final(3); Afloat.final(7); //////////////////////////////////// check.report_states(check.deadlocks()); cout << check.get_report(); cin.get(); return 0; }
|