版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《离散数学》
实验报告
姓名:
学号:
班级:
实验一连结词逻辑运算
实验目的
实现二元合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,运用程序语言
实现逻辑这儿种逻辑运算。
二.实验内容
从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的真值。
规定对输入内容进行分析,假如不符合0、1条件需要重新输入,程序有良好的输入输出界面。
三.实验环境
使用MicrosoftVisualC++6.。为编程软件,采用称C/C++语言为编程语言实
现。
四.实验过程
1.算法分析:
合取:P,q都为1的时候为1,其他为0
析取:p,q都为0的时候为0,其他为1
蕴含:P为1,q为0时为0,其他为1
等价:P,q同真同假
2.程序代码:
#include<stdio.h>
intmain()
(
®intP,Q,a,b,c,d,p,q;
printf(〃P的值〃);
for(P=0;PV2;P++)
(
for(Q=0;Q<2;Q++)
printf(z,\t%dn,P);
}
printf(〃\nQ的值〃);
»for(P=0;P<2;P++)
。for(Q=0;Q<2;Q++)
gprintf("\t%d",Q);
}
printf("\n非P的值”);
•for(P=0;P<2;P++)
•(
。for(Q=0;Q〈2;Q++)
8{
。oif(P==0)/*判断非P的值*/
。P=1;
o®else
0;
。printf(〃\t%d〃,p);
6)
oprintf(M\n非Q的值〃);
for(P=0;P<2;P++)
0(
ofor(Q=0;Q<2;Q++)
8{
°6if(Q—=1)/*判断非Q的值*/
。q=0;
»else
P二l;
8printf("\t%d〃,q);
0)
}
oprintf(z,\nP与Q的值”);
for(P=0;P〈2;P++)
(
。for(Q=0;Q<2;Q++)
。if(Q=0IP==0)/*判断P与Q的值*/
。a=0;
。eIse
o<>a=1;
rintf(〃\t%d〃,a);
6}
}
printf(〃\nP或Q的值〃);
ofor(P=0;P<2;P++)
(
for(Q=0;Q<2;Q++)
8(
if(Q==l||P==1)/*判断P或Q的值*/
«>b=1;
gelse
oooob=0;
叩rintf('\t%d",b);
}
printf(〃\nP蕴含Q的值〃);
for(P=0;P<2;P++)
(
ofor(Q=0;Q<2;Q++)
必if(P==l&&Q=0)/*判断P蕴含Q的值*/
。c=0;
比Ise
空=1;
oprintf(u\t%d,z,c);
}
°)
printf(•,\nP等价Q的值〃);
for(P=0;P<2;P++)
。{
8for(Q=0;Q<2;Q++)
81
3if(P=Q)/*判断P等价Q的值*/
。d=l;
。else
gd=0;
aeprintf("\t%d”,d);
0}
)
printf("\n〃);
oreturn0;
}
3.实验数据及结果分析:
实验二关系的复合运算及逆运算
一.实验目的
熟悉关系的复合运算和逆运算,编程实现关系复合运算和逆运算算法。
二.实验内容
运用矩阵求解有限集上的复合关系和逆关系。
三.实验过程
1.算法分析:
复合运算就将两个用矩阵表达的关系进行复合,即在第一个矩阵中寻找值为1的元素坐标
(i,j),在第二个矩阵第j行寻找值为1的元素,若有,且坐标为(j,k),则产生的新
的关系的矩阵中坐标为(i,k)的元素值为1。
逆运算就是将用矩阵中值为1的元素坐标(i,j)对调,产生新的关系的矩阵中坐标为(j,i)
的元素值为lo
2.程序代码:
〃关系的复合运算
#include<iostream>
usingnamespacestd;
intmain()
I
ointa[100][100],b[100][100],c[100][100],i,j,k,n;
。cout*〃请输入集合X中元素的个数:〃;
cin>>n;
cout<<〃请输入关系矩阵Mr的格式:然〈<endl;
ofor(i=0;iVn;i++)
for(j=O;j<n;j++)
00cin»a[i][j];
°}
ocout<<“请输入关系矩阵Ms的格式:"<Xendl;
ofor(i=0;i<n;i++)
°{
for(j=0;j<n;j++)
℃in>>b[i][j];
}
ofor(i=0;i<n;i++)〃进行复合运算
°{
for(j=0;j<n;j++)
«>if(a[i][j]==l)
gofor(k=O;k〈n;k++)
°if(b[j][k]==1)
。。c[i][k]=l;
}
for(i=0;i<n;i++)
(
。for(j=0;j<n;j++)
。f(c[i][j]!=1)
。ac[i][j]=0;
ocout<<end1;
cout<V〃关系矩阵Mr与Ms的复合运算结果是:〃“end1;
ofor(i=0;i<n;i++)
gfor(j=0;j<n;j++)
eCOUt<<C[1][j]<<〃";
。cout«end1;
3;
return0;
)
//关系的逆运算
#include<stdio.h>
intmain()
1
ointa[100][l00],b[l00][100],n,i,j,index;
叩rintf(〃请输入集合X中元素的个数:〃);
oscanf(〃%d〃,&n);
叩rintf(〃请输入关系矩阵Mr的格式:\n〃);
ofor(i=0;i<n;i++)
(
8for(j=O;j<n;j++)
«>scanf(〃%d〃,&a[i][j]);
for(i=0;i<n;i++)//进行逆运算
才or(j=0;j<n;j++)
aif(a[i][j]==1)
8index=i;
。i=j;
ggj=index;
ab[i][j]=1;
)
}
»for(i=0;i<n;i++)
(
-for(j=0;j<n;j++)
if(b[i][j]!=l)
»b[i][j]=0;
•)
oprintf(/z\n关系矩阵Mrc为:\n");
•for(i=0;i<n;i++)
(
for(j=0;j<n;j++)
oprintf("%db[i][j]);
。printff\n");
»}
return0;»
)
3.实验数据及结果分析:
,•E:\document虚散效学\Debug、关系的复合运算.exe'
法谀人集含X中元毒歌事:5
请棚入关系矩阵Mr的和舍
01000
01000
00010
00000
00000
请输入关系矩阵胎的格式:
00100
00001
10000
01000
00000
关系矩阵济与也的复合运算结果是:
00001
00001
01000
00000
00000
Pressanykeytocontinue
关系矩阵Mre为:
100
100
011
Pressanykeytocontinue.
实验三关系的闭包运算
一.实验目的
熟悉关系的闭包运算,编程实现关系闭包运算算法。
二.实验内容
运用矩阵求解有限集上给定关系的自反、对称和传递闭包。
三.实验过程
1.算法分析:
在三种闭包中自反和对称闭包的求解很容易,对矩阵表达的关系,其自反闭包只要将矩阵的
主对角线所有置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法);传递闭包则直接根
据t(R)=R+。
2.程序代码:
#inc1ude<iostream>
usingnamespacestd;
voidde1iver(intx[100][100],inty[100][100],intn);
intmain()
(
inti,j.n,R[100][100],r[l00][100],s[l00][100],t[1
00][100];
℃out<<〃请输入矩阵的阶:”;
<>cin»n;
»cout«endl<<"请输入R的关系矩阵:"end1;
for(i=0;i<n;i++)〃输入R的关系矩阵
(
ofor(j=O;j<n;j++)
cin>>R[i][j];
for(i=0;i<n;i++)//将R的关系矩阵赋值给r,s,t
»for(j=0;j<n;j++)
(
[i][j];
s[iJ[j>R[i][j];
6Mt[i][j]=R[i][j];
)
}。
ofor(i=0;i<n;i++)//自反闭包运算
(
»if(r[i][i]==0)
6r[i]Li]=l;
)
0coutVVendlVV”自反闭包关系矩阵r(R):"<<end1;
»for(i=0;i<n;i++)〃输出r的关系矩阵
°(
8for(j=O;j<n;j++)
scout«r[i][j]«z/";
acout<<end1;
»)
»for(i=0;i<n;i++)〃对称闭包运算
(»
for(j=0;j<i;j++)
if(sEi][j]==1I|s[j][i]==1)
°sEi][j]=l;
os[j][i]=1;
)
)
0}0
ocout<<end1«〃对称闭包关系矩阵s(R):,z<<end1;
for(i=0;i<n;i++)〃输出s的关系矩阵
。{
。for(j=0;j<n;j++)
~>£>cout<<s[i]〃;
gcout<<endl;
d
<>deliver(t,R,n);〃关于传递闭包的函数
oreturn0;
)
voiddeliver(intx[100][100],intyL100][100],intn)〃关于
传递闭包的函数
1
ointi,j,k,m,z[100][100];
ofor(m=0;m<n;m++)
°{
for(i=0;i〈n;i++)
efor(j=0;j<n;j++)
•if(x[i][j]==1)
gfor(k=O;k<n;k++)
。“if(y[j][k]==l)〃进行复合运算
28bz[i]Lk]=1;
«*}
}
0)
0for(i=0;i<n;i++)
8for(j=0;j<n;j++)
«>if(z[i]Lj]!=1)
凸oz[i][j]=0;
0)
for(i=0;i<n;i++)
«>for(j=0;j<n;j++)
gx[i][j]=x[i][j]+z[i][j];〃进行传递闭包运算
)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(x[i][j]!=0)
8X[i][j]=1;
)
cout«end1<<"传递闭包关系矩阵t(R):end1;
»for(i=0;i<n;i++)〃输出x的关系矩阵
»(
ofOr(j=0;j<n;j++)
«>cout«x[i][j]«z/
cout<<endl;
3.实验数据及结果分析:
实验四图的矩阵表达
一.实验目的
熟悉图的矩阵表达方法一一邻接矩阵、可达矩阵和关联矩阵。
二.实验内容
运用邻接矩阵得到的可达矩阵来求解图的连通性质。
三.实验过程
1.算法分析:
可达矩阵表达图中任意两个节点间的可达关系,而邻接矩阵表达图中任意两个节点的邻接关
系。求解邻接矩阵A1,A2,A3......小可知任意两个节点之间是否存在互相连通的路,从而
判断是否可达。
2.程序代码:
#inc1ude<iostream>
usingnamespacestd;
voidmain()
(
inti,j,k,n,m,a[100][100],b[100][100],c[100][100],d[l00][1
00];
•coutV〈”请输入矩阵阶数:”;
»cin»n;
cout《”请输入邻接矩阵a<«endl;
for(i=0;i<n;i++)
(
•ofor(j=0;j<n;j++)
»cin>>a[i][j];
wb[i][j]=a[i][j];
0}
0}
for(i=0;i<n;i++)〃矩阵d为零矩阵
。(
«>for(j=0;j<n;j++)
d[i][j]=0;
。}
ofor(m=0;m<n;m++)
gfor(i=0;iVn;i++)〃矩阵c为零矩阵
{
sfor(j=0;j<n;j++)
Ei][j]=0;
0for(k=0;k<n;k++)
0{
0ofor(i=0;i<n;i++)
。for(j=0;j<n;j++)
6(
g℃[k][i]=c[k][i]+b[k][j]*a[j][i];//矩阵的乘法运算
0)
°}
for(i=0;i<n;i++)
6for(j=0;j<n;j++)
*b[i][j]=c[i][j];
。。d[i][j]=d[i][j]+b[i][j];
)
)
oocout<<〃m为〃V<m+l<V〃,矩阵b为:〃<<endl;
。for(i=0;i<n;i++)
必for(j=0;j<n;j++)
。ecout«b[i][j]«0;
。ocout«endl;
0}
for(i=0;i<n;i++)
ofor(j=0;j<n;j++)
o4f(d[i][j]!=0)
8d[i][j]=l;
ocoutC(〃可达矩阵d为:〃Gendl;
for(i=0;i<n;i++)
(
ofor(j=0;j<n;j++)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南湘江研究院有限责任公司招聘7人备考题库及答案详解参考
- 2026兴业银行南平分行春季校园招聘备考题库及答案详解【必刷】
- 2026江西鹰潭月湖区民政局招聘工作人员1人备考题库及参考答案详解(培优a卷)
- 2026北京大学工学院(本科生学院)招聘1名劳动合同制人员备考题库及答案详解【名师系列】
- 2026济南文旅发展集团有限公司校园招聘20人备考题库及答案详解(全优)
- 2026北新集团建材股份有限公司及成员企业巡察纪检干部招聘备考题库及答案详解【典优】
- 2026陕西西安医学院第二附属医院硕士人才招聘51人备考题库及答案详解【典优】
- 2026北京联合大学招聘45人备考题库及答案详解(夺冠系列)
- 2026陕西西安临潼博仁医院招聘11人备考题库含答案详解(典型题)
- 2026安徽省淮北市在定向选调生招录中同步开展党政储备人才引进40人备考题库带答案详解(新)
- 学堂在线 雨课堂 学堂云 网球技术动作入门 章节测试答案
- 2026广东惠州市自然资源局招聘编外人员4人笔试参考题库及答案解析
- 养生食膳行业分析报告
- 2026中国中原对外工程有限公司校园招聘笔试历年难易错考点试卷带答案解析
- DB42∕T 2523-2026 党政机关办公用房面积核定工作规范
- 2026南京六合科技创业投资发展有限公司招聘9人笔试备考试题及答案解析
- 2026济南市第七人民医院公开招聘派遣制工作人员(2名)考试参考试题及答案解析
- 2026年安徽师范大学专职辅导员招聘30人考试参考试题及答案解析
- 成都合资公司管理手册模板
- 二类医疗器械零售经营备案质量管理制度
- (2026年)肩峰下撞击综合征的诊断与治疗课件
评论
0/150
提交评论