资源简介
从那三个txt文档读出数据,然后根据自己写的算法,从正向和反向推理来的识别用户所描述是什么动物。
代码片段和文件信息
#include
#include
#include
#include
#define MAXNUM 50
typedef struct
{
int xuh;
char valu[50];
}Node;
typedef struct
{
int stat;//0:还未访问 1:至少用过一次 2:没用过但不冲突
int xuh;
}NFact;
typedef struct
{
int snum;//开始时的事实数
int curnum;//目前的事实数
int notEnoughFlag;//当最后若所有未用过的条件支持一个结论,但条件不足时,置1
NFact cod[MAXNUM];
}Fact;
typedef struct
{
int rslt;
int codNum;//记载前提的个数
int cod[10];//记载前提的序号
int used;//记载是否已匹配成功
}Nrule;
typedef struct
{
int codXuh;
int stat;
double weight;
int rslt;
//int codNum;
}bQueueNode;
typedef struct
{
int head;
int tail;
bQueueNode bNode[MAXNUM];
}bQueue;
typedef struct
{
int canReachTime;
int havReached;
}Reach;
typedef struct
{
int lastCodXuhInQueue;
int myXuh;
//int mycodNum;
int myRslt;
double myweight;
}CloseNode;
typedef struct
{
int head;
int tail;
CloseNode node[MAXNUM];
}Close;
int codnum=28;
int goalnum=7;
int rulenum=0;
Node goal[20];
Node cod[50];
Nrule rule[50];
Fact inpCod;
bQueue bqueue;
Reach recReach[MAXNUM];
Close close;
void readGoal()
{
FILE *fp;
int i;
if((fp=fopen(“goal.txt““r“))==NULL)
{
printf(“cannot open goal\n“);
exit(0);
}
i=0;
while((fscanf(fp“%d %s“&goal[i].xuh&goal[i++].valu))!=EOF);
fclose(fp);
}//readGoal
void readRule()
{
FILE *fp;
int i;
int tempxuhtempcodn;
char ch;
if((fp=fopen(“rules.txt““r“))==NULL)
{
printf(“cannot open data\n“);
exit(0);
}
i=0;
rule[i].codNum=0;
while((ch=fgetc(fp))!=EOF)
{
if(i==14)
i=i;
tempcodn=0;
while(ch!=‘\n‘&&ch!=EOF) //每一条规则
{
tempxuh=0;
while(ch<=‘9‘&&ch>=‘0‘)
{
tempxuh=tempxuh*10+ch-‘0‘;
ch=fgetc(fp);
}
rule[i].cod[tempcodn++]=tempxuh;
tempxuh=0;
if(ch==‘-‘)//下一个是结论
{
ch=fgetc(fp);
ch=fgetc(fp);
while(ch<=‘9‘&&ch>=‘0‘)
{
tempxuh=tempxuh*10+ch-‘0‘;
ch=fgetc(fp);
}
rule[i].rslt=tempxuh;
}//if
else if(ch==‘*‘)
{
ch=fgetc(fp);
}
rule[i].codNum++;
}
i++;
}
rulenum=i;
fclose(fp);
}//readCod
void readCod()
{
FILE *fp;
int i;
if((fp=fopen(“data.txt““r“))==NULL)
{
printf(“cannot open data\n“);
exit(0);
}
i=0;
while((fscanf(fp“%d %s“&cod[i].xuh&cod[i++].valu))!=EOF);
fclose(fp);
}//readCod
void readFiles()
{
//char fname[100];
readGoal();
readCod();
readRule();
}//reaFiles
int inputCod()
{
int retflag=1;
int temp;
int i;
i=0;
do
{
scanf(“%d“&temp);
inpCod.cod[i++].xuh=temp;
if(temp>=codnum)
{
printf(“特征序号不能大于%d请重新输入:\n“codnum-1);
fflush(stdin);
retflag=0;
}
}while(temp!=-1&&temp inpCod.snum=i-1;
inpCod.curnum=inpCod.snum;
/*inpCod.snum=5;
inpCod.curnum=inpCod.snum;
inpCod.cod[0].xuh=1;
inpCod.cod[1].xuh=5;
inpCod.cod[2].xuh=10;
inpCod.cod[3].xuh=15;
inpCod.cod[4].xuh=16;*/
return retflag;
}//inputCod()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 292 2009-12-17 18:16 产生式系统 正向和反向\data.txt
文件 58 2009-12-13 21:24 产生式系统 正向和反向\goal.txt
文件 179 2009-12-17 18:16 产生式系统 正向和反向\rules.txt
文件 14355 2009-12-26 00:11 产生式系统 正向和反向\产生式系统 正向和反向 finnal.c
目录 0 2010-01-09 16:14 产生式系统 正向和反向
----------- --------- ---------- ----- ----
14884 5
- 上一篇:C语言windows库函数
- 下一篇:C++ AVI播放器
相关资源
- C++ AVI播放器
- C语言windows库函数
- C语言写的冒泡排序程序,从文件读出
- c语言编写计算圆周率 的精确度
- 数据结构 C语言 迷宫问题求解 栈
- 自适应霍夫曼编码(C++)
- TstCon.exe
- 斗地主小游戏MFC版源程序
- blackScholes
- 偏序关系的哈斯图求解
- C++网络聊天室程序
- 说话人识别代码
- 专业课程设计—温度控制系统-包含(
- VS2012 MFC小程序 简易网络聊天室
- 实用Fourier变换及C++实现
- 基于pic单片机的数字pfc源码
- mpu9250驱动C语言源码 磁力计校准算法
- 基于单片机的json编解码源码.zip
- 基于VC的Samlight的二次开发Demo
- sourceinsight全局配置文件
- C语言实现A*算法解决传教士和野人渡
- test_opencv.cpp
- c++.win32.扫雷游戏代码
- 通讯录c++实现 功能:添加、删除、查
- 在VC++6.0中给对话框设置背景色或者背
- 杂志订阅管理系统
- C语言实现F算法 最短路径算法
- 简单多线程socket聊天室程序(c语言)
- C++ MongoDB 连接池代码实现
- C++编写的后方交会程序
评论
共有 条评论