离散实验报告.docx
- 文档编号:5318037
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:18.73KB
离散实验报告.docx
《离散实验报告.docx》由会员分享,可在线阅读,更多相关《离散实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
离散实验报告
学生实验报告册
(理工类)
课程名称:
离散结构专业班级:
17信息安全
学生学号:
**********学生姓名:
所属院部:
网络安全学院指导教师:
2017——2018学年第2学期
金陵科技学院教务处制
实验报告书写要求
实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
实验报告书写说明
实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。
各院部可根据学科特点和实验具体要求增加项目。
填写注意事项
(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明
实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求
实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:
联结词逻辑运算实验学时:
2
同组学生姓名:
陈希等实验地点:
B栋415
实验日期:
2018年4月12日实验成绩:
批改教师:
批改时间:
实验1五种联结词的逻辑运算
一.实验目的
用C语言实现两个命题变元的否定、合取、析取、蕴涵和等价表达式的计算。
熟悉联结词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。
二.实验仪器和设备
TurboC2.0
三.实验内容
从键盘输入两个命题变元P和Q的真值,求它们的否定、合取、析取、蕴涵和等价五种运算的的真值。
要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。
四.实验过程
1.算法分析:
编程语言为c语言
否定:
p,q为0时,值为1,其他为0
合取/\:
p,q都为1的时候为1,其他为0析取\/:
p,q都为0的时候为0,其他为1
蕴含->:
p为1,q为0时为0,其他为1等价<->:
p,q同真同假
2.程序代码:
#include
usingnamespacestd;
intmain()
{
intp,q;
while(true)
{
cout<<"请输入合法数字(p,q为0或1)"<<":
";
cin>>p>>q;
if(p==1&&q==1)
{
cout<<"p否定q"<<":
"<<0< cout<<"p合取q"<<": "<<1< cout<<"p析取q"<<": "<<1< cout<<"p蕴含q"<<": "<<1< cout<<"p等价q"<<": "<<1< } elseif(p==1&&q==0) { cout<<"p否定q"<<": "<<0< cout<<"p合取q"<<": "<<0< cout<<"p析取q"<<": "<<1< cout<<"p蕴含q"<<": "<<0< cout<<"p等价q"<<": "<<0< } elseif(p==0&&q==1) { cout<<"p否定q"<<": "<<0< cout<<"p合取q"<<": "<<0< cout<<"p析取q"<<": "<<1< cout<<"p蕴含q"<<": "<<1< cout<<"p等价q"<<": "<<0< } elseif(p==0&&q==0) { cout<<"p否定q"<<": "<<1< cout<<"p合取q"<<": "<<0< cout<<"p析取q"<<": "<<0< cout<<"p蕴含q"<<": "<<1< cout<<"p等价q"<<": "<<1< } else { cout<<"ERRORINPUTING! "< } } return0; } 3.实验数据及结果分析: 五.实验体会(遇到问题及解决办法,编程后的心得体会) 在实验的过程中,首先我的逻辑是p,q为0或1,四种情况,全部罗列出来也不会太麻烦,所以我选择用四个if,当四个情况写完之后,当输入的值不合法时(p,q有一个为非0或1的值),我又写了一个if使得排除这种情况。 在实验的过程中我又充分理解并巩固了离散中否定,析取,合取,蕴含,等价的运算。 实验项目名称: 关系的闭包运算实验学时: 2 同组学生姓名: 陈希等实验地点: B栋415 实验日期: 2018年4月19日实验成绩: 批改教师: 批改时间: 实验2关系的闭包运算 一.实验目的 熟悉关系的闭包运算,利用C语言编程实现关系闭包运算算法。 二.实验仪器和设备 TurboC2.0 三.实验内容 利用矩阵求有限集上给定关系的自反、对称和传递闭包。 四.实验过程 1.算法分析: 在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法);传递闭包可直接根据转化为矩阵计算,其相对应的矩阵Mt=M+M2+M3+… 2.程序代码: #include usingnamespacestd; intmain() { inti,j,n,m,R[100][100],r[100][100],s[100][100],t[100][100]; while(true) { cout<<"请输入矩阵的行数"< cin>>m; cout<<"请输入矩阵的列数"< cin>>n; cout<<"请输入R的关系矩阵"< for(i=0;i { for(j=0;j cin>>R[i][j]; } for(i=0;i { for(j=0;j { r[i][j]=R[i][j];//进行R的自反运算 s[i][j]=R[i][j];//进行R的对称运算 t[i][j]=R[i][j];//进行R的传递运算 } } for(i=0;i { for(j=0;j { if(i==j) r[i][i]=1; } }//z自反 cout<<"R的自反闭包为: "< for(i=0;i { for(j=0;j { cout< } cout< } for(i=0;i { for(j=0;j { if(s[i][j]==0&&s[j][i]==0) { s[i][j]=0; } else { s[i][j]=s[j][i]=1; } } } cout<<"R的对称闭包为: "< for(i=0;i { for(j=0;j { cout< } cout< } for(i=0;i { for(j=0;j { if(t[j][i]==1) { for(intk=0;k { t[j][k]=t[j][k]+t[i][k]; if(t[j][k]>=1) { t[j][k]=1; } } } } } cout<<"R的传递闭包为: "< for(i=0;i { for(j=0;j { cout< } cout< } } return0; } 3.实验数据及结果分析 五.实验体会(遇到问题及解决办法,编程后的心得体会) 在试验的过程中,对称和传递先后都有一些困难,对称是逻辑加,除了1+1是1外其他都符合规律,所以我将这一种情况单独列出来。 后来传递闭包,如果按Mt=M+M2+M3+…算的话,如果阶数大了,那么效率不是很高,所以我找到了传递闭包的规律,从而进行运算。 实验项目名称: 全域关系和恒等关系实验学时: 2 同组学生姓名: 陈希等实验地点: B栋415 实验日期: 2018年4月26日实验成绩: 批改教师: 批改时间: 实验3全域关系和恒等关系 一.实验目的 通过上机编写程序,可以进一步加深我们对关系中集合A上的恒等关系,以及从集合A到集合B上的全域关系的理解。 二.实验仪器和设备 TurboC2.0 三.实验内容 用C语言实现,求集合A上的恒等关系以及从集合A到集合B上的全域关系。 四.实验过程 1.算法分析 对于A上的恒等关系,只需让二元关系的第一个元素和第二个元素相等即可;对于从A到B上的全域关系,即求A和B的笛卡尔积。 让A中的第一个元素对应B中的每一个元素,让A中的第二个元素对应B中的每一个元素,依次进行下去,即可得到从A到B上的全域关系。 2.程序代码: #include usingnamespacestd; intmain() { intm,n,i,j,x[100],y[100]; while(true) { cout<<"请输入集合A的元素个数: "< cin>>m; cout<<"请输入集合B的元素个数: "< cin>>n; cout<<"请输入合法集合A: "< for(i=0;i {cin>>x[i];} cout<<"请输入合法集合B: "< for(j=0;j {cin>>y[j];} cout<<"A的恒等关系为: "< cout<<"{"; for(i=0;i { cout<<"<"< } cout<<"}"< cout<<"集合A到集合B上的全域关系为: "< cout<<"{"; for(i=0;i { for(j=0;j { cout<<"<"< } } cout<<"}"< } return0; } 3.实验数据及结果分析 五、实验体会(遇到问题及解决办法,编程后的心得体会) 在实验的过程中,首先考虑恒等关系以及全域关系的算法,需要用到数组关系,所以我分别定义两个数组解决两个问题,然后只需要套用循环即可。 实验项目名称: 集合的交、并和差集运算实验学时: 2 同组学生姓名: 陈希等实验地点: B栋415 实验日期: 2018年5月3日实验成绩: 批改教师: 批改时间: 实验4集合的交、并和差集运算 一.实验目的 集合论是一切数学的基础,集合的运算规则是集合论中的重要内容。 通过该项实验,目的是让我们更加深刻地理解集合的概念和性质,并掌握集合的运算规则等。 二.实验仪器和设备 TurboC2.0 三.实验内容 通过对集合的掌握,利用C语言编程计算任意两个集合的交集、并集和差集运算。 四.实验过程 1.算法分析 1.在求交集时,利用if找出两个集合的相同元素,并输出。 2.在求并集时,将两个集合的元素属于其一或另一个。 3.在求差集时,将一个集合减去交集,然后将其输出。 2.程序代码: #include usingnamespacestd; #definemax10000 intmain() { intm,n,i,j,k=-1,x[100],y[100],a[100],b[100],c[100]; while(true) { cout<<"请输入集合A中元素的个数: "< cin>>m; cout<<"请输入集合B中元素的个数: "< cin>>n; cout<<"请输入集合A: "< for(i=0;i { cin>>x[i]; } cout<<"请输入集合B: "< for(j=0;j { cin>>y[j]; } for(i=0;i { for(j=0;j { if(x[i]==y[j]) { ++k; a[k]=x[i]; } } } cout<<"A与B的交集为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)