离散数学实验报告
专业班级: 姓名: 学号: 实验成绩: 1.【实验题目】
命题逻辑(3)
2.【实验目的】
加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。
3.【实验内容】
用化简命题逻辑公式的方法设计一个表决开关电路。
4. 【实验要求】
通过以下界面提示实现相应逻辑运算,给出具体逻辑值
****************************************************************
请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):
A董事表决值(1或0): B董事表决值(1或0): C董事表决值(1或0): D董事表决值(1或0): E董事表决值(1或0):
出结果/继续/结束(y/c/exit):
****************************************************************
5. 【算法描述】
① 某公司董事会由5个董事组成,公司要对某项决策进行投票表决,只要半数(3位董事)以上都同意(用1表示同意,用0表示不同意)决策通过,否则不通过。试写出5位董事表决的命题公式(提示:列出表决开关电路真值表,从真值表得出5人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式)。 ② 上面公式中的每一个联结词是一个开关元件,将它们定义成C语言中的函数。
③ 输入5人表决值(同意为1,不同意为0),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。
④ 输出函数表达式的结果,如果是1,则表明表决通过,否则表决不通过。
6. 【源程序(带注释)】
#include
int main() {
char a[100],b[100],c[100],d[100],e[100]; //定义5个字符型数组,用来储存ABCDE5个董事的表决值
char f[100]; //f数组为接收出结果/继续/结束的字符 void print(); //声明打****的函数 for(;;) {
print(); cout<<\请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):\\n\\n\
cout<<\董事表决值(1或0):\\n\\tB董事表决值(1或0):\\n\\tC董事表决值(1或0):\\n\\tD董事表决值(1或0):\\n\\tE董事表决值(1或0):\
cout<<\出结果/继续/结束(y/c/exit):\\n\ print(); cout<<\请输入A董事表决值(1或0):\ cin>>a; while(strcmp(a,\&& strcmp(a,\利用strcmp判断字符串,排除其他错误
{
print(); cout<<\董事表决值输入有误,请重新输入!\\n\ print();
cout<<\请输入A董事表决值(1或0):\ cin>>a; } print();
cout<<\请输入B董事表决值(1或0):\ cin>>b; while(strcmp(b,\ {
print(); cout<<\董事表决值输入有误,请重新输入!\\n\ print();
cout<<\请输入B董事表决值(1或0):\ cin>>b;
} print(); cout<<\请输入C董事表决值(1或0):\ cin>>c; while(strcmp(c,\ {
print(); cout<<\董事表决值输入有误,请重新输入!\\n\ print();
cout<<\请输入C董事表决值(1或0):\ cin>>c; } print(); cout<<\请输入D董事表决值(1或0):\ cin>>d; while(strcmp(d,\ {
print(); cout<<\董事表决值输入有误,请重新输入!\\n\ print();
cout<<\请输入D董事表决值(1或0):\ cin>>d; } print(); cout<<\请输入E董事表决值(1或0):\ cin>>e; while(strcmp(e,\ {
print(); cout<<\董事表决值输入有误,请重新输入!\\n\ print();
cout<<\请输入E董事表决值(1或0):\ cin>>e; } print();
cout<<\您输入的董事会表决值为:\\n\
cout<<\董事表决值:\董事表决值:\董事表决值:\董事表决值:\董事表决值:\
print(); for(;;) {
cout<<\出结果/继续/结束(y/c/exit):\ cin>>f;
if(strcmp(f,\
{
if((a[0]+b[0]+c[0]+d[0]+e[0])>242) {print();cout<<\表决通过!\\n\利用ASC II码判断表决值是否大于242(10进制为3)
else {
print();
cout <<\表决不通过。\\n\ print(); } }
else if(strcmp(f,\ {
break; }
else if(strcmp(f,\ {
exit(0); }
else {
print();
cout<<\输入有误,请重新输入!\\n\ print(); } }
}
system(\return 0; }
void print() {
cout<<\
}
7.【实验结果与分析总结(含运行结果截图)】
主界面:
功能演算: