1、离散数学实验三用化简命题逻辑公式的方法设计一个表决开关电路离散数学-实验三-用化简命题逻辑公式的方法设计一个表决开关电路离散数学实验报告 专业班级: 姓名: 学号: 实验成绩:1【实验题目】命题逻辑(3)2【实验目的】 加深对五个基本联结词(否定、合取、析取、条件、双条件)的理解、掌握利用基本等价公式化简公式的方法。3【实验内容】 用化简命题逻辑公式的方法设计一个表决开关电路。4. 【实验要求】通过以下界面提示实现相应逻辑运算,给出具体逻辑值*请输入5位董事(分别用A、B、C、D、E表示)的表决值(1或0):A董事表决值(1或0): B董事表决值(1或0):C董事表决值(1或0):D董事表决值
2、(1或0):E董事表决值(1或0):出结果/继续/结束(y/c/exit): *5. 【算法描述】 某公司董事会由5个董事组成,公司要对某项决策进行投票表决,只要半数(3位董事)以上都同意(用1表示同意,用0表示不同意)决策通过,否则不通过。试写出5位董事表决的命题公式(提示:列出表决开关电路真值表,从真值表得出5人表决开关电路的主合取公式(或主析取公式),将公式化简成尽可能含五个基本联结词最少的等价公式)。 上面公式中的每一个联结词是一个开关元件,将它们定义成C语言中的函数。 输入5人表决值(同意为1,不同意为0),调用上面定义的函数,将5人表决开关电路真值表的等价公式写成一个函数表达式。
3、coutb; while(strcmp(b,0)!=0 & strcmp(b,1)!=0) print(); coutB董事表决值输入有误,请重新输入!n; print(); coutb; print(); coutc; while(strcmp(c,0)!=0 & strcmp(c,1)!=0) print(); coutC董事表决值输入有误,请重新输入!n; print(); coutc; print(); coutd; while(strcmp(d,0)!=0 & strcmp(d,1)!=0) print(); coutD董事表决值输入有误,请重新输入!n; print(); cout
4、d; print(); coute; while(strcmp(e,0)!=0 & strcmp(e,1)!=0) print(); coutE董事表决值输入有误,请重新输入!n; print(); coute; print(); cout您输入的董事会表决值为:n; couttA董事表决值:antB董事表决值:bntC董事表决值:cntD董事表决值:dntE董事表决值:eendl; print(); for(;) coutf; if(strcmp(f,y)=0) if(a0+b0+c0+d0+e0)242) print();cout表决通过!n;print();/利用ASC II码判断表决值
5、是否大于242(10进制为3) else print(); cout 表决不通过。n; print(); else if(strcmp(f,c)=0) break; else if(strcmp(f,exit)=0) exit(0); else print(); cout输入有误,请重新输入!n; print(); system(pause);return 0; void print() cout*n;7【实验结果与分析总结(含运行结果截图)】 主界面:功能演算:测试错误:分析总结: 要善于利用strcmp函数来判断字符串之间是否相等,避免接受进不必要的字符造成程序错误。把表决值定义为字符型的话,在判断是否表决通过的时候,也应该利用ASC II码来判断(0的ASC II码为48 ; 1的ASC II码为49)。 为了程序美观,可以把打印星号的语句单独写为子函数,这样每次要打印星号的时候,只要调用该子函数即可。 有时候之前输入的数据会对后面的输入造成干扰,这时候可以使用fflush(stdin)来清空输入缓存区,以免对后面数据的输入造成干扰。