(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc

上传人:公**** 文档编号:556753428 上传时间:2022-11-17 格式:DOC 页数:29 大小:192.54KB
返回 下载 相关 举报
(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc_第1页
第1页 / 共29页
(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc_第2页
第2页 / 共29页
(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc_第3页
第3页 / 共29页
(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc_第4页
第4页 / 共29页
(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc》由会员分享,可在线阅读,更多相关《(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式.doc(29页珍藏版)》请在金锄头文库上搜索。

1、(完整word版)求给定命题公式的真值表并根据真值表求公式的主范式“离散数学”实验报告(求给定命题公式的真值表并根据真值表求公式的主范式)专 业 网络工程 班 级 1202班 学 号 12407442 姓 名 张敏慧 2013.12.14目录一.实验目的3二.实验内容.3 求任意一个命题公式的真值表3三.实验环境3四. 实验原理和实现过程(算法描述)31.实验原理32.实验流程图5五.实验代码6 六. 实验结果14 七. 实验总结19一.实验目的本实验课程是网络工程专业学生的一门专业基础课程,通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验

2、报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。熟悉掌握命题逻辑中的真值表、主范式等,进一步能用它们来解决实际问题。二.实验内容求任意一个命题公式的真值表,并根据真值表求主范式详细说明: 求任意一个命题公式的真值表本实验要求大家利用C/C语言,实现任意输入公式的真值表计算。一般我们将公式中的命题变元放在真值表的左边,将公式的结果放在真值表的右边。命题变元可用数值变量表示,合适公式的表示及求真值表转化为逻辑运算结果;可用一维数表示合式公式中所出现的n个命题变元,同时它也是一个二进制加法器的模拟器,每当在这个模拟器中产生一个二进制数时,就相当于给各个命题变元产

3、生了一组真值指派。算法逻辑如下:(1)将二进制加法模拟器赋初值0(2)计算模拟器中所对应的一组真值指派下合式公式的真值。(3)输出真值表中对应于模拟器所给出的一组真值指派及这组真值指派所对应的一行真值。(4)产生下一个二进制数值,若该数值等于2n-1,则结束,否则转(2)。三.实验环境;使用visual C+6.0为编程软件,采用C语言为编程语言实现。四. 实验原理和实现过程(算法描述);1.实验原理(1)真值表:表征逻辑事件输入和输出之间全部可能状态的表格。列出命题公式真假值的表。通常以1表示真,0 表示假。命题公式的取值由组成命题公式的命题变元的取值和命题联结词决定,命题联结词的真值表给出

4、了真假值的算法。 真值表是在逻辑中使用的一类数学表,用来确定一个表达式是否为真或有效。(2)主范式:主析取范式:在含有n个命题变元的简单合取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单合取式为小项。由若干个不同的小项组成的析取式称为主析取范式;与A等价的主析取范式称为A的主析取范式。任意含n个命题变元的非永假命题公式A都存在与其等价的主析取范式,并且是惟一的。主合取范式:在含有n个命题变元的简单析取式中,若每个命题变元与其否定不同时存在,而两者之一出现一次且仅出现一次,称该简单析取式为大项。由若干个不同的大项组成的合取式称为主合取范式;与A等价的主合取范式称

5、为A的主合取范式。任意含n个命题变元的非永真命题公式A都存在与其等价的主合取范式,并且是惟一的。(2)首先是输入一个合理的式子,然后从式子中查找出变量的个数,开辟一个二进制函数,用来生成真值表,然后用函数运算,输出结果,并根据结果归类给范式,最后输出范式。函数部分,主要是3个函数,一个为真值表递加函数,通过二进制的加法原理递进产生,一个为分级运算函数,这个函数是通过判断括号,选出最内级括号的内容执行运算函数,这样一级一级向外运算,最后得出最终结果,剩下一个为主运算函数,按照运算符号的优先级按顺序进行运算,如先将所有非运算运算完,再执行与运算。如此运算。2.实验流程图如下:开始输入式子计算变量个

6、数生成真值表输出真值表变量赋值运算式子输出结果归类主范式输出主范式结束循环是否结束YN主函数开始检查括号是否是最内级括号运算内容是否是最后结果返回结果结束开始结束YYNN非运算与运算或运算蕴含运算等值运算返回结果主运算函数分级运算函数五.实验代码#include stdio.h#include stdlib.h#include string.h#include conio.h#include math.h#define N 50 void panduan(int bN,int f);/赋值函数int tkh (char szN, char ccuN, int icuN, int h0);/分级

7、运算函数int fkh (char szN, char ccuN, int icuN, int h0);/主运算函数main() int i1,i2,d=1,icuN,kh=0,jg,j=0,h0;/icuN用于存放变量值,kh括号计数,jg存放结果 int bj=0,hqN,h=0,x=0,xqN;/hqN存放合取结果xqN存放析取结果 char szN,ccuN,sz0N,s;/szN存放式子,ccuN存放变量,sz0N也是用于存放式子 hq0=-1; xq0=-1; printf(*n);/标语 printf(* *n); printf(* 欢迎进入逻辑运算软件 *n); printf(

8、* (可运算真值表,主范式,支持括号) *n); printf(* *n); printf(* 用!表示非 *n); printf(* 用&表示与 *n); printf(* 用|表示或 *n); printf(* 用表示蕴含 *n); printf(* 用表示等值 *n); printf(* *n); printf(*nn); printf(请输入一个合法的命题公式:n);/输入式子 gets(sz);/读取式子 strcpy(sz0,sz);/复制式子 for(i1=0;i1=a & szi1=A & szi1=Z) for(i2=0;i2j;i2+) /判断并储存变量。 if(ccui2

9、=szi1)/去除重复变量 d=0; if(d=1) ccuj=szi1; j+; d=1; printf(nd该式子中的变量个数为:%dn,j);/输出变量个数 h0=j; printf(n输出真值表如下:n n); /输出真值表表头 for(i1=0;i1h0;i1+) printf( %c ,ccui1); printf( ); puts(sz); printf(n); for(i1=0;i1j;i1+) /先将所有的变量赋值为零。 icui1=0; for(i2=0;i2j;i2+)/输出真值表前项 printf( %d ,icui2); jg=tkh(sz,ccu,icu,h0);

10、/用函数求结果 if(jg=0)/结果为0,合取加1 hqh+=bj; else /否则,析取加1 xqx+=bj; printf( %dn,jg);/输出运算结果 strcpy(sz,sz0); for(i1=0;i1(int)pow(2,j)-1;i1+) +bj;panduan(icu,j-1); /赋值变量jg=tkh(sz,ccu,icu,h0); if(jg=0)/结果为0,合取加1 hqh+=bj; else /否则,析取加1 xqx+=bj; strcpy(sz,sz0); /恢复被修改的数组。 for(i2=0;i2j;i2+) printf( %d ,icui2);/输出真

11、值表前项 printf( %dn,jg);/输出运算结果 if(hq0=-1)/不存在合取范式时 printf(n该命题公式不存在主合取范式。n); else printf(n该命题公式的主合取范式:nt); for(i1=0;i10)/判断并添加符号 printf(/); printf(M(%d),hqi1); /输出主合取范式 if(xq0=-1)/不存在析取范式时 printf(n该命题公式不存在主析取范式。n); else printf(nn该命题公式的主析取范式:nt); for(i1=0;i10)/判断并添加符号 printf(/); printf(m(%d),xqi1);/输出主析取范式 printf(n); printf(n欢迎下次再次使用!n );/结束 getch();void panduan(int bN,int f) / 二进制赋值。 int i; i=f; if(bf=0)/加1 bf=1; else/进位 bf

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号