首页 > 代码库 > 一个简单的有穷状态机-单词数统计程序
一个简单的有穷状态机-单词数统计程序
1 #include <iostream> 2 #include <cctype> 3 4 class WordCounter 5 { 6 enum class _state 7 { 8 STATE_INIT = 0, 9 STATE_IN_WORD,10 STATE_OUT_WORD,11 };12 public:13 static int count_words(const char* text);14 };15 16 int WordCounter::count_words(const char* text)17 {18 int counts = 0;19 _state state = _state::STATE_INIT;20 const char* it = text;21 22 for (; *it != ‘\0‘; it++)23 {24 switch (state)25 {26 case WordCounter::_state::STATE_INIT:27 if (isalpha(*it))28 {29 state = _state::STATE_IN_WORD;30 }31 else32 {33 state = _state::STATE_OUT_WORD;34 }35 break;36 case WordCounter::_state::STATE_IN_WORD:37 if (!isalpha(*it))38 {39 state = _state::STATE_OUT_WORD;40 //状态发生转换41 counts++;42 }43 break;44 case WordCounter::_state::STATE_OUT_WORD:45 if (isalpha(*it))46 {47 state = _state::STATE_IN_WORD;48 }49 break;50 default:51 break;52 }//switch53 }//for54 if (_state::STATE_IN_WORD == state)55 {56 counts++;57 }58 return counts;59 }60 61 int main(int argc, const char* argv[])62 {63 using namespace std;64 char* text = " my name is\r\n Percy!!this is BBC English";65 cout << text << ‘\n‘ << WordCounter::count_words(text) << endl;66 getchar();67 return 0;68 }
使用状态机的直接好处就是让问题分析简单化。
一个简单的有穷状态机-单词数统计程序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。