文档介绍:实验报告
( 2016 / 2017 学年 第 一 学期)
课程名称 离散数学
实验名称 利用真值表法求取主析取范式以及主合取范
式的实现
实验报告
第一步:预处理
预处理,去除中缀表达式中条件 ->中的 >, 和双条件 <=>中的 = 和 > ,这样,
所有的运算符只是一个字符,后期处理起来更加方便。
void ddd()
{
string::iterator i=(); ;
printf("(");
for(int j=0;j<();j++)
{
if(j!=0) printf("
if(p[j]==1)
{
∧");
printf("%c",alpha[j]);
}
else
{
printf(" ¬%c",alpha[j]);
}
}
printf(")");
}
printf("\n");
printf(" 主合取范式为 for(i=0;i<();i++) {
\n");
if(i!=0) printf("
int *p=jia[i].a;
printf("(");
for(int j=0;j<();j++)
{
∧");
if(j!=0) printf("
if(p[j]==0)
{
∨");
printf("%c",alpha[j]);
}
else
{
printf(" ¬%c",alpha[j]);
}
}
printf(")");
}
printf("\n\n");
}
return 0;
}
程序测试与分析:
由于使用了 STL 中 vector 数组和 string 类,所以可以实现计算含有任意数
量的字母变量的表达式。
本程序中或运算为 | , 与运算为 & , 单条件为 -> , 双条件我 <=> , 非
运算为 !
测试一:
输入 P&Q
运行截图:
结果:正确
测试二:
输入书上第 37 页下方例题 (P&Q)|(!P&R)
结果:正确
测试三:
课本 39 页( 4)d) (P->(Q&R))&(!P->(!Q&!R))
测试四
输入 A&B&C&D&E
正确
测试五
输入课本 39 页( 2)b)
P->((Q&R)->S)
正确
测试六:
输入:课本 39 页( 4)a) (!P|!Q)->(P<=>!Q)
正确