⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ai.cpp

📁 一个用于动物识别的产生式系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
using namespace std;

int i, n;										//用于计数
char j;										//用于读入字符
int a[21], b[5], c[8], r[16];					
/*a[]用于表示特征;b[]用于表示初步判断结果;c[]用于表示最终判断结果;r[]用于表示使用的规则*/
fstream fout;

void reset()									//初始化各项数据
{
	for(i=0; i<=20; i++) a[i]=0;
	for(i=0; i<=4; i++) b[i]=0;
	for(i=0; i<=7; i++) c[i]=0;
}

void list()										//输出程序界面
{
	cout << "欢迎使用本动物识别系统" << endl;
	cout << "系统推理规则库" << endl;
    cout << "R01: IF 该动物有发,THEN 该动物是哺乳动物" << endl;
    cout << "R02: IF 该动物有奶,THEN 该动物是哺乳动物" << endl;
    cout << "R03: IF 该动物有羽毛,THEN 该动物是鸟" << endl;
    cout << "R04: IF 该动物会飞、会下蛋,THEN 该动物是鸟" << endl;
    cout << "R05: IF 该动物吃肉,THEN 该动物是肉食动物" << endl;
    cout << "R06: IF 该动物有犬齿、有爪、眼盯前方,THEN 该动物是肉食动物" << endl;
    cout << "R07: IF 该动物是哺乳动物、有蹄,THEN 该动物是有蹄类动物" << endl;
    cout << "R08: IF 该动物是哺乳动物、嚼反刍,THEN 该动物是有蹄类动物" << endl;
    cout << "R09: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有暗斑点,THEN 该动物是金钱豹" << endl;
    cout << "R10: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有黑色条纹,THEN 该动物是虎" << endl;
    cout << "R11: IF 该动物是有蹄类动物、有长脖子、有长腿、身上有暗斑点,THEN 该动物是长颈鹿" << endl;
    cout << "R12: IF 该动物是有蹄类动物、身上有黑色条纹,THEN 该动物是斑马" << endl;
    cout << "R13: IF 该动物是鸟、有长脖子、有长腿、不会飞,THEN 该动物是鸵鸟" << endl;
    cout << "R14: IF 该动物是鸟、会游泳、不会飞、有黑白二色,THEN 该动物是企鹅" << endl;
    cout << "R15: IF 该动物是鸟、善飞,THEN 该动物是信天翁" << endl;
	cout << endl;
	fout << "欢迎使用本动物识别系统" << endl;							//输出到文本
	fout << "系统推理规则库" << endl;
    fout << "R01: IF 该动物有发,THEN 该动物是哺乳动物" << endl;
    fout << "R02: IF 该动物有奶,THEN 该动物是哺乳动物" << endl;
    fout << "R03: IF 该动物有羽毛,THEN 该动物是鸟" << endl;
    fout << "R04: IF 该动物会飞、会下蛋,THEN 该动物是鸟" << endl;
    fout << "R05: IF 该动物吃肉,THEN 该动物是肉食动物" << endl;
    fout << "R06: IF 该动物有犬齿、有爪、眼盯前方,THEN 该动物是肉食动物" << endl;
    fout << "R07: IF 该动物是哺乳动物、有蹄,THEN 该动物是有蹄类动物" << endl;
    fout << "R08: IF 该动物是哺乳动物、嚼反刍,THEN 该动物是有蹄类动物" << endl;
    fout << "R09: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有暗斑点,THEN 该动物是金钱豹" << endl;
    fout << "R10: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有黑色条纹,THEN 该动物是虎" << endl;
    fout << "R11: IF 该动物是有蹄类动物、有长脖子、有长腿、身上有暗斑点,THEN 该动物是长颈鹿" << endl;
    fout << "R12: IF 该动物是有蹄类动物、身上有黑色条纹,THEN 该动物是斑马" << endl;
    fout << "R13: IF 该动物是鸟、有长脖子、有长腿、不会飞,THEN 该动物是鸵鸟" << endl;
    fout << "R14: IF 该动物是鸟、会游泳、不会飞、有黑白二色,THEN 该动物是企鹅" << endl;
    fout << "R15: IF 该动物是鸟、善飞,THEN 该动物是信天翁" << endl;
	fout << endl;
}

void judge()									//判断录入的字符,标记选中的特征
{
	j=getchar();
	if(j=='y') a[i]=1;
	getchar();
	i++;
}

void input()									//选择特征
{
	i=1;
	cout << "推理开始:" << endl;
	fout << "推理开始:" << endl;
	cout << "下面将列出动物可能具有的特征,符合的请按y,不确定的请按n:" << endl;
	cout << "该动物有毛发 "; judge();			//a[1]
	cout << "该动物有奶 "; judge();			//a[2]
	cout << "该动物有羽毛 "; judge();			//a[3]
	cout << "该动物会飞 "; judge();			//a[4]
	cout << "该动物会下蛋 "; judge();			//a[5]
	cout << "该动物吃肉 "; judge();			//a[6]
	cout << "该动物有犬齿 "; judge();			//a[7]
	cout << "该动物爪 "; judge();				//a[8]
	cout << "该动物眼盯前方 "; judge();		//a[9]
	cout << "该动物有蹄 "; judge();			//a[10]
	cout << "该动物嚼反刍 "; judge();			//a[11]
	cout << "该动物是黄褐色 "; judge();		//a[12]
	cout << "该动物身上有暗斑点 "; judge();	//a[13]
	cout << "该动物身上有黑色条纹 "; judge();	//a[14]
	cout << "该动物有长脖子 "; judge();		//a[15]
	cout << "该动物有长腿 "; judge();			//a[16]
	cout << "该动物不会飞 "; judge();			//a[17]
	cout << "该动物会游泳 "; judge();			//a[18]
	cout << "该动物有黑白二色 "; judge();		//a[19]
	cout << "该动物善飞 "; judge();			//a[20]
}

void output()									//输出应用的规则和推断的结果
{
	n=0;
	cout << endl;
	fout << endl;
	cout << "应用的规则:" << endl;
	fout << "应用的规则:" << endl;
	for(i=1; i<=15; i++)
	{
		if(r[i]==1)
		{
			n++;								//记录应用了几条规则
			switch(i)
			{
				case 1: cout << "R01: IF 该动物有发,THEN 该动物是哺乳动物" << endl; 
						fout << "R01: IF 该动物有发,THEN 该动物是哺乳动物" << endl;
						break;
				case 2: cout << "R02: IF 该动物有奶,THEN 该动物是哺乳动物" << endl;
						fout << "R02: IF 该动物有奶,THEN 该动物是哺乳动物" << endl;
						break;
				case 3: cout << "R03: IF 该动物有羽毛,THEN 该动物是鸟" << endl;
						fout << "R03: IF 该动物有羽毛,THEN 该动物是鸟" << endl;
						break;
				case 4: cout << "R04: IF 该动物会飞、会下蛋,THEN 该动物是鸟" << endl;
						fout << "R04: IF 该动物会飞、会下蛋,THEN 该动物是鸟" << endl;
						break;
				case 5: cout << "R05: IF 该动物吃肉,THEN 该动物是肉食动物" << endl; 
						fout << "R05: IF 该动物吃肉,THEN 该动物是肉食动物" << endl; 
						break;
				case 6: cout << "R06: IF 该动物有犬齿、有爪、眼盯前方,THEN 该动物是肉食动物" << endl;
						fout << "R06: IF 该动物有犬齿、有爪、眼盯前方,THEN 该动物是肉食动物" << endl;
						break;
				case 7: cout << "R07: IF 该动物是哺乳动物、有蹄,THEN 该动物是有蹄类动物" << endl;
						fout << "R07: IF 该动物是哺乳动物、有蹄,THEN 该动物是有蹄类动物" << endl;
						break;
				case 8: cout << "R08: IF 该动物是哺乳动物、嚼反刍,THEN 该动物是有蹄类动物" << endl;
						fout << "R08: IF 该动物是哺乳动物、嚼反刍,THEN 该动物是有蹄类动物" << endl;
						break;
				case 9: cout << "R09: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有暗斑点,THEN 该动物是金钱豹" << endl;
						fout << "R09: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有暗斑点,THEN 该动物是金钱豹" << endl;
						break;
				case 10: cout << "R10: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有黑色条纹,THEN 该动物是虎" << endl;
					  	 fout << "R10: IF 该动物是哺乳动物、肉食动物、黄褐色、身上有黑色条纹,THEN 该动物是虎" << endl;
						 break;
				case 11: cout << "R11: IF 该动物是有蹄类动物、有长脖子、有长腿、身上有暗斑点,THEN 该动物是长颈鹿" << endl;
						 fout << "R11: IF 该动物是有蹄类动物、有长脖子、有长腿、身上有暗斑点,THEN 该动物是长颈鹿" << endl;
					 	 break;
				case 12: cout << "R12: IF 该动物是有蹄类动物、身上有黑色条纹,THEN 该动物是斑马" << endl;
						 fout << "R12: IF 该动物是有蹄类动物、身上有黑色条纹,THEN 该动物是斑马" << endl;
					 	 break;
				case 13: cout << "R13: IF 该动物是鸟、有长脖子、有长腿、不会飞,THEN 该动物是鸵鸟" << endl;
						 fout << "R13: IF 该动物是鸟、有长脖子、有长腿、不会飞,THEN 该动物是鸵鸟" << endl;
						 break;
				case 14: cout << "R14: IF 该动物是鸟、会游泳、不会飞、有黑白二色,THEN 该动物是企鹅" << endl;
						 fout << "R14: IF 该动物是鸟、会游泳、不会飞、有黑白二色,THEN 该动物是企鹅" << endl;
						 break;
				case 15: cout << "R15: IF 该动物是鸟、善飞, THEN 该动物是信天翁" << endl;
						 fout << "R15: IF 该动物是鸟、善飞, THEN 该动物是信天翁" << endl;
						 break;
			}
		}
	}
	if(!n) 
	{
		cout << "没有使用任何一条推理规则。" <<endl;
		fout << "没有使用任何一条推理规则。" <<endl;
	}
	cout << endl;
	fout << endl;
	cout << "推理结果:" << endl;
	fout << "推理结果:" << endl;
	if(b[1]) 
	{
		cout << "该动物是哺乳动物" << endl;
		fout << "该动物是哺乳动物" << endl;
	}
	if(b[2]) 
	{
		cout << "该动物是鸟" << endl;
		fout << "该动物是鸟" << endl;
	}
	if(b[3]) 
	{
		cout << "该动物是肉食动物" << endl;
		fout << "该动物是肉食动物" << endl;
	}
	if(b[4]) 
	{
		cout << "该动物是有蹄类动物" << endl;
		fout << "该动物是有蹄类动物" << endl;
	}
	if(!(b[1] || b[2] || b[3] || b[4])) 
	{
		cout << "条件不足,无法判断属于哪类动物。" << endl;
		fout << "条件不足,无法判断属于哪类动物。" << endl;
	}
	if(c[1])
	{
		cout << "该动物可能是金钱豹" << endl;
		fout << "该动物可能是金钱豹" << endl;
	}
	if(c[2]) 
	{
		cout << "该动物可能是虎" << endl;
		fout << "该动物可能是虎" << endl;
	}
	if(c[3])
	{
		cout << "该动物可能是长颈鹿" << endl;
		fout << "该动物可能是长颈鹿" << endl;
	} 
	if(c[4]) 
	{
		cout << "该动物可能是斑马" << endl;
		fout << "该动物可能是斑马" << endl;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -