资源简介
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语言实现 多线程文件传输
相关资源
- 和矩阵相关的头文件matrix.h
- c++运行程序缺少mex.h
- C++面向对象程序设计教程(第3版)—
- MFC_unicode相关链接库
- 文件查重工具c++实现,
- 椭圆曲线加密算法实现
- _miaoking博文——企业人力资源管理系
- 《C++面向对象程序设计》第2版编程题
- C++数据结构等价类实现
- 磁盘调度算法模拟软件,完整课程设
- Ogre嵌入MFC_DEMO
- 生产者消费者问题C++语言
- VS.net / VC++ 2003 2005(.sln)项目转化为
- C++ 访问DOM中文文档IHTML
- Gabor滤波器C++程序
- c++usb端口访问
- 课程设计学生宿舍管理系统C++
- C++控制Windows桌面切换
- C语言windowlinux平台的SNTP实现
- 在MFC应用程序中浏览PDF、Word文档文件
- vc++实现图像处理:中值滤波
- OS_页面置换算法实验c++程序代码
- MRF2图像分割vc++代码
- 吉林大学软件学院2011数据结构实验题
- 应用C/C++语言编写灰度图像霍夫曼编码
- 计算机图形学 中点画椭圆法 Bresenha
- 语音识别技术C++源代码
- 二叉树c++源代码实现查找,删除,插
- 傅里叶描述子的提取,并且提取手势
- C++中国象棋人机下棋 高智商版
评论
共有 条评论