资源简介
C++写得专家系统,包括了推理机、规则解释、知识库更新。
代码片段和文件信息
#include“Fruit.h“
#include
#include
#include
using std::set;
using std::ifstream;
using std::ofstream;
string FruitDao::file=“fruit.s“;
vector Fruit::_property_names;
DB *DB::_db;
ostream& operator <<(ostream& outconst Fruit& f)
{
out< out<<‘ ‘;
out< out<<‘\n‘;
return out;
}
istream& operator >>(istream& inFruit& f)
{
in>>f._name;
in>>f._property;
return in;
}
bool FruitDao::save(const string& fileconst FruitDbase& db)
{ //指定的保存文件
ofstream ofile(file);
for(int i=0;i ofile<
ofile<<‘\n‘;
for(int i=0;i ofile<<(*(db[i]));
ofile.close();
return true;
}
bool FruitDao::load(const string& fileFruitDbase& db)
{//领域专家可以指定加载目录
ifstream ifile(file);
Fruit::_property_names.clear();
for(int i=0;i {
string s;
ifile>>s;
Fruit::_property_names.push_back(s);
}
while(ifile)
{
SmartPtr sp(new Fruit);
ifile>>(*sp);
db.push_back(sp);
}
ifile.close();
return true;
}
const FruitDbase FruitDao::find(const Property& propconst FruitDbase& db)
{//依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_property==prop)
re.push_back(db[i]);
return re;
}
int FruitDao::insert(const Fruit& fFruitDbase& db)
{//插入一中规则
db.push_back(SmartPtr(new Fruit(f)));
return 1;
}
int FruitDao::del(const string& nameFruitDbase& db)
{//水果名进行删除
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_name==name)
{
db.erase(db.begin()+i);
++c;
}
}
return c;
}
int FruitDao::del(const Property& propFruitDbase& db)
{//依据属性删除一组水果,返回删除个数
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_property==prop)
{
db.erase(db.begin()+i);
++c;
}
}
return c;
}
const FruitDbase FruitDao::find(int prop_bitbool hasconst FruitDbase& db)
{ //依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_property.at(prop_bit)==has)
re.push_back(db[i]);
return re;
}
int FruitDao::del(int prop_bitbool hasFruitDbase& db)
{//依据属性删除一组水果,返回删除个数
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_property.at(prop_bit)==has)
{
db.erase(db.begin()+i);
++c;
}
}
return c;
}
const FruitDbase FruitDao::find(const string& nameconst FruitDbase& db)
{//依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_name==name)
re.push_back(db[i]);
return re;
}
vector FruitDao::getFruitNameFromDB(const FruitDbase& db)
{
set v;
for(int i=0;i v.insert(db[i]->_name);
vector vs(v.begin()v.end());
return vs;
}
const FruitDbase FruitDao::find(int prop_bit[]bool has[]int numconst FruitDbase& db)
{ //依据特定组合属性进行查找
FruitDbase re;
assert(num>0 && num<=Constant::BITSIZE);
for(int i=0;i {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-05-14 11:46 ExpertsEngine\
目录 0 2014-05-14 11:46 ExpertsEngine\ExpertsEngine\
文件 4070 2014-05-14 09:24 ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj
文件 1239 2014-05-14 09:24 ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj.filters
文件 143 2014-05-12 09:45 ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj.user
文件 3609 2014-05-14 11:29 ExpertsEngine\ExpertsEngine\Fruit.cpp
文件 2603 2014-05-14 11:31 ExpertsEngine\ExpertsEngine\Fruit.h
文件 871 2014-05-13 22:31 ExpertsEngine\ExpertsEngine\SmartPtr.h
文件 1423 2014-05-14 11:36 ExpertsEngine\ExpertsEngine\fruit.s
文件 4663 2014-05-14 11:37 ExpertsEngine\ExpertsEngine\main.cpp
文件 906 2014-05-12 09:45 ExpertsEngine\ExpertsEngine.sln
文件 17408 2014-05-14 11:45 ExpertsEngine\ExpertsEngine.suo
目录 0 2014-05-14 11:46 ExpertsEngine\Release\
文件 41472 2014-05-14 11:45 ExpertsEngine\Release\ExpertsEngine.exe
文件 1423 2014-05-14 11:36 ExpertsEngine\Release\fruit.s
文件 15872 2014-05-12 10:50 ExpertsEngine\Thumbs.db
文件 1238 2014-05-14 11:44 ExpertsEngine\rule.txt
文件 672 2014-05-14 11:44 ExpertsEngine\test.txt
文件 4482056 2009-12-06 20:39 ExpertsEngine\水果关系图.bmp
- 上一篇:linux下的简易聊天室
- 下一篇:C语言实现 多线程文件传输
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
川公网安备 51152502000135号
评论
共有 条评论