动物专家识别系统动物专家识系统别系统.doc

动物专家识别系统动物专家识系统别系统.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动物专家识别系统动物专家识系统动物专家识别系统动物专家识别系统

运行环境: Windows XP + VC6.0 逻辑: 代码: #include string #include vector #include iostream #include iomanip #include fstream #include stdlib.h using namespace std; struct CAUSE_TYPE{ //事实 string cause; //事实字符串描述 bool flag; //是否已经使用,防止输入的事实重复 //其他省略 }; struct RULE_TYPE{ //结论 string result; //结论字符串描述 vectorCAUSE_TYPE* cause; //判断依据的事实 int count; //结论的前件有多少个吻合 bool finded; //是否匹配好所有前件 //其他省略 }; class AniDist{ public: bool load(string str); //根据文件创建结论队列和它们的事实,str为文件路径(知识获取机构) void clear(); //将所有结论的 possible清零,所有flag清空 RULE_TYPE* find(vectorstring str); //推理过程(推理机) vectorstring split(string str); //将输入的事实字符串转换为队列,字符串以空格分割(用于人机接口) void print(RULE_TYPE* rul); //打印判断的信息 void print_table(); //打印从文件中读取的的结论队列 void clearmem(); //清理内存 friend bool operator !(AniDist ad); private: bool isload; vectorRULE_TYPE* queue; //结论队列链表 CAUSE_TYPE* create_cause(string str); //根据输入的字符串创建单个事实 RULE_TYPE* create_rule(string str); //根据输入的字符串创建单个结论 void findreasion(RULE_TYPE* rul); //(解释机构) }; /*判断知识库有否问题*/ bool operator !(AniDist ad){ return !ad.isload; } //以下为类函数实现 //以下是用于创建结论队列的函数 /* //根据输入的字符串创建单个事实 */ CAUSE_TYPE* AniDist::create_cause(string str){ CAUSE_TYPE *tmp = new CAUSE_TYPE; tmp-cause = str; tmp-flag = false; return tmp; } /* //根据输入的字符串创建单个结论 */ RULE_TYPE* AniDist::create_rule(string str){ RULE_TYPE *tmp = new RULE_TYPE; tmp-result=str; tmp-count = 0; tmp-finded=false; return tmp; } /* //根据文件创建结论队列和它们的事实,str为文件路径 */ bool AniDist::load(string str){ isload = false; fstream fp; //从文件读取 string readstr=; fp.open(str.c_str(),ios::in); if(!fp) return false; while(getline(fp,readstr)){ if(readstr[0]==#){ readstr.erase(readstr.begin()); RULE_TYPE *tmp=NULL; tmp = create_rule(readstr); queue.push_back(tmp); }else{ CAUSE_TYPE *tmp=NULL; tmp = create_cause(readstr); if (tmp == NULL) {exit(-1); } if(queue.size()!=0) queue[q

您可能关注的文档

文档评论(0)

cxiongxchunj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档