📄 ai.cpp
字号:
#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 + -