- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学实验一.
实 验 报 告
(20 / 2013 学年 第 学期)
课程名称 实验名称 实验时间 年 月 日 指导单位 指导教师
学生姓名 班级学号 学院(系) 专 业
实 验 报 告
实验名称 指导教师 实验类型 实验学时 实验时间 实验目的和要求
编程实现用真值表法求任意变量的合式公式的主析取范式和主合取范式
要求:
从屏幕输入变元个数和每种情况的真值
规范列出合式公式的真值表
给出相应主析取和主合取范式
实验环境(实验设备) CPU:Ghz
内存:1.00GB
软件:
操作系统:Windows XP SP3
编程软件:Visual C++ 6.0
实验原理及内容
核心代码:
将十进制数转化成二进制数,并以不同的方式显示在屏幕上,如在输入真值表时显示每种情况对应的真假,主要完成如下图所示的功能:
void BinaryShow(int m,int n) //m代表zzb[m]中的m,n代表变元个数
{
int a,i,j,q;
for(i=n;i0;i--) ?//i的值:n,n-1,…,1
{
for(j=0,q=1;ji-1;j++)
{
q*=2; //先求出2的i-1次方
}
a=m/q; //用m/(2的i-1次方)求出的值即为二进制i-1位上的值
if(a==1)
{
coutT ;
m=m-q; //若i-1位是1则减去(2的i-1次方)考虑循环下一步i-2位的值
}
else
coutF ;
}
}
显示范式时也是类似,总体思想都是将10进制变成2进制再处理。
void BinaryAnd(int m,int n)
{
int a,i,j,q;
cout(;
for(i=n;i0;i--)
{
for(j=0,q=1;ji-1;j++)
{
q*=2;
}
a=m/q;
if(a==1)
{
m=m-q;
}
else
cout┐;
coutPn-i+1;
if(i!=1)
cout∧;
else
cout);
}
cout∨;
}
小细节:
一开始总会多打一个∧或∨,后来用cout\b ;代码删除最后一个字符处理掉。
四、运行结果:
首先是选择界面:
如果直接选择2、3、4:
先选择1输入变元个数并逐个输入每种情况公式的真值:
如果输入0、1之外的数时:
全部输入完之后输入2显示真值表:
输入3显示主析取范式:
如果该公式为永假,比如如下情况时:
则会输出“False”:
输入4显示主合取范式:
如果该公式为永假,比如如下情况时:
则会输出“False”:
输入5则退出
实 验 报 告
、实验小结
我首先想到的就是把10进制数转化为2进制表示出来,但是这也有一个问题,比如变元三个的情况下,3变成了11,而非我预期的011,第一个问题即如何显示默认的0。于是我重写了算法,终于解决了这个大难题。
但是好景不长,再以为结束了的时候,突然出现范式末尾总会出现额外的∧或∨,通过晚上查询资料得知,用\b+空格可以将光标前移一位,并写入空格覆盖掉原来多出来的∧或∨,这下问题也解决了。
通过这次试验,我又学会了新的编程技巧,对10进制与2进制转换也更熟练了,同时也加深了我对主析取和主合取范式,以及用真值表法求出主析取和主合取范式的方法的理解。
五、指导教师评语
文档评论(0)