离散数学实验报告 2011_第1页
离散数学实验报告 2011_第2页
离散数学实验报告 2011_第3页
离散数学实验报告 2011_第4页
离散数学实验报告 2011_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

离散数学实验报告学 院 科信软件学院 专 业 计算机科学与技术 指导教师 邹丽娜 学 号 10999181 姓 名 赵辉 提交日期 2011-12-23 实验一 连结词逻辑运算一.实验目的实现二元合取、析取、蕴涵和等价表达式的计算。熟悉连接词逻辑运算规则,利用程序语言实现逻辑这几种逻辑运算。二.实验内容从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、蕴涵和等价四种运算的的真值。要求对输入内容进行分析,如果不符合0、1条件需要重新输入,程序有良好的输入输出界面。三. 实验过程1. 算法分析:编程语言为c语言合取/:p,q都为1的时候为1,其他为0析取/:p,q都为0的时候为0,其他为1蕴含-:p为1,q为0时为0,其他为1等价:p,q同真同假2. 程序代码:#includeint main()int p,q,i,t; printf(*n); printf(* *n);printf( 欢迎进入逻辑运算软件n); printf(* *n);printf(*n);doprintf(请输入p的值(0或1);scanf(%d,&p);if(p!=0&p!=1)printf(输入有误);while(p!=0&p!=1); doprintf(请输入q的值(0或1);scanf(%d,&q); if(q!=0&q!=1)printf(输入有误);while(q!=0&q!=1); doprintf(请选择要进行的操作n);printf(1:合取n2:析取n3:蕴含n4:等价n);scanf(%d,&i);switch(i)case 1:if(p&q) printf(合取运算:p/q=1n);else printf(合取运算:p/q=0n);break; case 2:if(p|q) printf(析取运算:p/q=1n);else printf(析取运算:p/q=0n);break; case 3:if(p&!q) printf(蕴含:p-q=0n);else printf(蕴含:p-q=1n); break;case 4:if(p&q)|(!p&!q) printf(等价运算:pq=1n);else printf(等价运算:pq=0n); break; printf(是否继续运算10n); scanf(%d,&t); while(t); return 0; 3.实验数据及结果分析;初始界面输入及选择进行的操作循环操作退出实验二 关系的闭包运算一 、实验目的熟悉关系的闭包运算,编程实现关系闭包运算算法。一 、实验内容利用矩阵求解有限集上给定关系的自反、对称和传递闭包。三. 实验过程1. 算法分析:在三种闭包中自反和对称闭包的求解很容易,对矩阵表示的关系,其自反闭包只要将矩阵的主对角线全部置为1就可;对称闭包则加上关系的转置矩阵(逻辑加法);传递闭包则有两种算法(二选一即可):算法1:直接根据计算,过程略。算法2:Warshall算法(1962)设R的关系矩阵为M(1)令矩阵A=M(2)置i=1(3)对所有的j,若Aj,i=1,则对于 k=1,2,n,令Aj,k=Aj,k+Ai,k 注:此处为逻辑加,可以使用运算符|(4) i=i+l(5)若in,则转到(3),否则结束 流程图开始声明各子函数输入关系矩阵输入z z=1;调用自反闭包函数z=2,调用对称闭包函数z=3调用传递闭包函数结束2. 程序代码:(c+)#includeint m,n;void zifan(int a100100)int i,j;a00=a11=a22=a33=1;for(i=0;im;i+)for(j=0;jn;j+) coutaij; cout ;coutendl;void duichen(int a100100) int i,j; int c100100; for(i=0;im;i+) for(j=0;jn;j+)cij=aij|aji;coutcij ; coutendl;void chuandi(int a100100) int i,j,k; int c100100; for(k=0;km;k+) for(i=0;in;i+) for(j=0;jn;j+) cij=aij|aik+1&ak+1j;for(i=0;im;i+) for(j=0;jn;j+)coutcij ; coutendl;int main() int i,j,z; int b100100; coutinput the matrixendl; cout请输入矩阵的行数:; cinm; coutendl; cout请输入矩阵的列数:; cinn; coutendl; for(i=0;im;i+) cout请输入第i行元素:endl; for(j=0;jbij; int t; do cout请输入要选择的操作:endl; cout1自反闭包的关系矩阵为:endl; cout2对称闭包的关系矩阵为:endl; cout3传递闭包的关系矩阵为:z; switch(z) case 1: zifan(b);break; case 2: duichen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论