资源简介

从那三个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


评论

共有 条评论