离散数学集合的运算实验报告
离散数学实验报告

“离散数学”实验报告目录一、实验目的 (3)二、实验内容 (3)三、实验环境 (3)四、实验原理和实现过程(算法描述) (3)1、实验原理........................................................................................................2、实验过程.......................................................................................................五、实验数据及结果分析 (13)六、源程序清单 (24)源代码 (24)七、其他收获及体会 (45)一、实验目的实验一:熟悉掌握命题逻辑中的联接词、真值表、主范式等,进一步能用它们来解决实际问题。
实验二:掌握关系的概念与性质,基本的关系运算,关系的各种闭包的求法。
理解等价类的概念,掌握等价类的求解方法。
实验三:理解图论的基本概念,图的矩阵表示,图的连通性,图的遍历,以及求图的连通支方法。
二、实验内容实验一:1. 从键盘输入两个命题变元P和Q的真值,求它们的合取、析取、条件和双条件的真值。
(A)2. 求任意一个命题公式的真值表(B,并根据真值表求主范式(C))实验二:1.求有限集上给定关系的自反、对称和传递闭包。
(有两种求解方法,只做一种为A,两种都做为B)2. 求有限集上等价关系的数目。
(有两种求解方法,只做一种为A,两种都做为B)3. 求解商集,输入集合和等价关系,求相应的商集。
(C)实验三:以偶对的形式输入一个无向简单图的边,建立该图的邻接矩阵,判断图是否连通(A)。
并计算任意两个结点间的距离(B)。
对不连通的图输出其各个连通支(C)。
三、实验环境C或C++语言编程环境实现。
四、实验原理和实现过程(算法描述)实验一:1.实验原理(1)合取:二元命题联结词。
离散实验报告

离散实验报告专业:数学与应用数学班级:091121学号:2009112125姓名:张鼎珩日期:2011.06.23实验内容:实验一真值计算实验二两个集合运算实验三关系闭包计算实验四关系与函数进行试验:实验一真值计算一、实验目的熟悉联结词合取、析取、条件和双条件的概念,编程求其真值。
二、实验内容(1)求任意一个命题公式的真值表:从键盘输入两个命题P 和Q的真值,求它们的合取、析取、蕴含和等价的真值(2)利用真值表求任意一个命题公式的主范式(3)利用真值表进行逻辑推理三实验程序:#include<stdio.h>/*标准输入输出头文件*/#include<stdlib.h>/*该文件包含了的C语言标准库函数的定义*/#include<string.h>/*字符串数组的函数定义的头文件*/#include<conio.h>/*通用输入输出库*/#include<math.h>#define N 50void jisuan();void zhenzhibiao();void panduan(int b[N],int f);int tkh (char sz[N], char ccu[N], int icu[N], int h0);int fkh (char sz[N], char ccu[N], int icu[N], int h0);main(){int a1;start:do{printf(" 1.求P、Q的合取、析取、条件和双条件的真值\n 2.求任意一个命题公式的真值表,并根据真值表求主范式\n 3.退出\n");printf("\n选择功能选项:");fflush(stdin);/*清空输入缓冲区,通常是为了确保不影响后面的数据读取*/scanf("%d",&a1);switch(a1)/*switch语句实现选择功能*/{case 1:system("cls");jisuan();break;/*功能A*/case 2:system("cls");fflush(stdin);zhenzhibiao();break;/*功能BC*/case 3:system("exit");exit(0);/*结束整个程序的运行*/default:system("cls");goto start;/*控制流转移到start处*/}}while(1);}void jisuan()/*功能A*/{char p,q,t,ch;int p1,q1;do{start:fflush(stdin);printf("请输入P和Q的真值(T或F):");scanf("%c,%c",&p,&q);if((p=='F'||p=='f'||p=='T'||p=='t')&&(q=='F'||q=='f'||q=='T'||q=='t')){if(p=='F'||p=='f')/*赋值*/p1=0;elsep1=1;if(q=='F'||q=='f')q1=0;elseq1=1;if(p1|q1)/*计算*/t='T';elset='F';printf("P析取Q为:%c\n",t);if(p1&q1)t='T';elset='F';printf("P和取Q为:%c\n",t);if((!p1)|q1)t='T';elset='F';printf("P条件Q为:%c\n",t);if(p1==q1)t='T';elset='F';printf("P双条件Q为:%c\n",t);}else{printf("请按正确格式输入!\n");goto start;};printf("是否继续输入?Y/N");fflush(stdin);ch=getch();system("cls");}while(ch!='n'&&ch!='N');}void zhenzhibiao()/*功能BC*/{int i1,i2,d=1,icu[N],kh=0,jg,j=0,h0;int bj=0,hq[N],h=0,x=0,xq[N];char sz[N],ccu[N],sz0[N];hq[0]=-1;xq[0]=-1;printf("请输入一个合法的命题公式(可含与或非及括号):\n");gets(sz);strcpy(sz0,sz);for(i1=0;i1<strlen(sz);i1++){if(sz[i1]==')' || sz[i1]=='(')kh++;if(sz[i1]>='a' && sz[i1]<='z' || sz[i1]>='A' && sz[i1]<='Z'){for(i2=0;i2<j;i2++) /*判断并储存变量*/if(ccu[i2]==sz[i1])d=0;if(d==1){ccu[j]=sz[i1];j++;}d=1;}}printf("\n该式子中的变量个数为:%d\n",j);h0=j;printf("\n输出真值表如下:\n \n");for(i1=0;i1<h0;i1++)printf(" %c ",ccu[i1]);printf(" ");puts(sz);printf("\n");for(i1=0;i1<j;i1++) /*先将所有的变量赋值为零*/icu[i1]=0;for(i2=0;i2<j;i2++)printf(" %d ",icu[i2]);jg=tkh(sz,ccu,icu,h0);if(jg==0)hq[h++]=bj;elsexq[x++]=bj;printf(" ------> %d\n",jg);strcpy(sz,sz0);for(i1=0;i1<(int)pow(2,j)-1;i1++){++bj;panduan(icu,0); /*赋值变量*/jg=tkh(sz,ccu,icu,h0);if(jg==0)hq[h++]=bj;elsexq[x++]=bj;strcpy(sz,sz0); /*恢复被修改的数组*/for(i2=0;i2<j;i2++)printf(" %d ",icu[i2]);printf(" ------> %d\n",jg);}if(hq[0]==-1)printf("\n该命题公式不存在主合取范式。
离散实验报告_幂集

一、实验目的1. 理解幂集的概念,掌握幂集的运算规则;2. 掌握幂集在实际问题中的应用;3. 培养逻辑思维能力和编程能力。
二、实验原理幂集是指一个集合中所有子集的集合,记作P(A)。
对于任意集合A,其幂集P(A)的元素个数等于2的A的元素个数次方。
设集合A={a1, a2, ..., an},则其幂集P(A)包含以下元素:1. 空集∅;2. 单元素集合{a1},{a2},...,{an};3. 两个元素组成的集合,如{a1, a2},{a1, a3},...,{an-1, an};4. ...;5. n个元素组成的集合,即A本身。
幂集的运算规则如下:1. 交换律:P(A) = P(B);2. 结合律:(P(A) ∩ P(B)) ∩ P(C) = P(A ∩ B) ∩ P(C);3. 分配律:P(A) ∪ (P(B) ∩ P(C)) = (P(A) ∪ P(B)) ∩ (P(A) ∪ P(C))。
三、实验内容1. 定义一个集合A;2. 求集合A的幂集P(A);3. 分析幂集在实际问题中的应用。
四、实验步骤1. 定义集合A,例如:A = {1, 2, 3};2. 编写程序计算幂集P(A);3. 分析幂集P(A)的元素;4. 应用幂集解决问题。
五、实验结果以集合A = {1, 2, 3}为例,其幂集P(A)为:P(A) = {∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}六、实验分析1. 幂集P(A)包含8个元素,即2^3 = 8,符合幂集的定义;2. 幂集P(A)的元素包括空集、单元素集合、两个元素组成的集合以及A本身;3. 幂集在实际问题中具有广泛的应用,例如:在计算机科学中,集合的幂集可以用于描述数据结构、算法设计等;在数学中,幂集可以用于研究集合论、拓扑学等。
七、实验总结通过本次实验,我们掌握了幂集的概念和运算规则,并了解了幂集在实际问题中的应用。
第二次离散实验报告

“离散数学”实验报告(实验1)专业网络工程班级网133学号139074337姓名李阳一.实验目的;本实验课程是计算机专业学生的一门专业基础课程,通过实验,帮助学生更好地掌握计算机科学技术常用的离散数学中的概念、性质和运算;通过实验提高学生编写实验报告、总结实验结果的能力;使学生具备程序设计的思想,能够独立完成简单的算法设计和分析。
熟悉掌握集合中的交、并、相对补、对称差、笛卡尔乘积、以及集合间的关系运算等,进一步能用它们来解决实际问题。
二.实验内容;从键盘输入两个集合A和B的元素,求它们的交∩、并∪、相对补-、对称差(+)、笛卡尔乘积×、以及集合间的关系复合运算×三. 实验原理;1.实验原理(1)交:A∩B={x|x∈A∧x∈B}对于集合A和集合B,由即属于A又属于B的所有元素所组成的集合,。
(2)并:A∪B={x|x∈A∨x∈B}若A和B是集合,则A和B并集是有所有A的元素或所有B的元素,而没有其他元素的集合。
(3)相对补:B - A = { x| x∈B,x∉A}A -B = { x| x∈A,x∉B}若 A 和 B 是集合,则 A 在 B 中的相对补集,或叫做 B 和 A 的集合论差,是这样一个集合,其元素属于 B,但不属于 A。
(4)对称差:A(+)B={x|x∈A∪B,x∉A∩B}A(+)B=(A∪B)—(A∩B)A(+)B=(A—B)∪(B—A)集合A与集合B中所有不属于A∩B的元素的集合。
(5)笛卡尔乘积:AxB={<x,y>|x∈A∧y∈B}设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB. (6)求集合间关系的复合运算:RoS=})S∧<{>∈>∈<>∃<x,Ry,zyz|y(x,设R是X到Y的关系,S是Y到Z的关系,则RoS称为R和S的复合关系。
离散数学实验报告(两篇)

引言:离散数学是一门基础性的数学学科,广泛应用于计算机科学、电子信息等领域。
本文是《离散数学实验报告(二)》,通过对离散数学实验的深入研究和实践,总结了相关的理论知识和应用技巧,希望能够对读者对离散数学有更加深入的理解。
概述:本实验主要涉及离散数学中的集合、关系、图论等基本概念及其应用。
通过对离散数学的实验学习,深入掌握了这些概念和应用,对于在实际问题中的应用和拓展具有重要的意义。
正文内容:一、集合相关概念及应用1.定义:集合是由元素组成的无序的整体。
介绍了集合的基本概念、集合的表示法以及集合的运算。
2.集合的应用:介绍了集合在数学、计算机科学中的应用,如数据库的查询、关系代数等。
二、关系相关概念及应用1.定义:关系是一个元素与另一个元素之间的对应关系。
介绍了关系的基本概念、关系的表示方法及其运算。
2.关系的应用:介绍了关系在图像处理、社交网络分析等领域的应用,如图像中的像素点之间的关系、社交网络中用户之间的关系等。
三、图论基础知识及应用1.定义:图是由顶点和边组成的抽象的数学模型。
介绍了图的基本概念、图的表示方法和图的运算。
2.图论的应用:介绍了图论在路由算法、电子商务等领域的应用,如路由器的路由选择、电子商务中的商品推荐等。
四、布尔代数的概念及应用1.定义:布尔代数是一种基于集合论和逻辑学的代数系统。
介绍了布尔代数的基本概念、布尔表达式及其化简方法。
2.布尔代数的应用:介绍了布尔代数在电路设计、开关控制等方面的应用,如逻辑门电路的设计、开关控制系统的建模等。
五、递归的概念及应用1.定义:递归是一种通过调用自身来解决问题的方法。
介绍了递归的基本原理、递归的应用技巧。
2.递归的应用:介绍了递归在算法设计、树的遍历等方面的应用,如快速排序算法、树结构的遍历等。
总结:通过本次离散数学的实验学习,我深入掌握了集合、关系、图论等基本概念与应用。
集合的应用在数据库查询、关系代数等方面起到了重要的作用。
关系的应用在图像处理、社交网络分析等领域有广泛的应用。
离散数学实验报告求集合的运算——并运算

【实验目的】通过编程实现求给定集合A和B的并集C(C=A∪B)的运算。
【实验内容】已知所给集合A和B,求A与B 的并集C(C=A∪B)。
【实验原理】因为并集的定义为:C={x|x∈A∨x∈B},所以,只要将集合A与B合在一起就得到了并集C。
但是,在一个集合中,同样的元素没必要出现两次或两次以上,所以,在将集合A送入并集C后,应将集合B中与A中相同的元素删除,再将集合B送入并集C之中。
【程序代码】#include<stdio.h>int main(){int a[101],b[101],c[201]={0};int m,n;scanf("%d%d",&m,&n);for(int i=1;i<=m;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)scanf("%d",&b[i]);for(int i=1;i<=m;i++)c[i]=a[i];int i=m+1;int k;for(int j=1;j<=n;j++){int t=1;for(k=1;k<=m;k++){if(a[k]==b[j])t=0;}if(t==1){c[i]=b[j];i++;}}for(int i=1;i<=m+n;i++){if(c[i]!=0)printf("%d ",c[i]);}}【实验结果】【实验心得】首先想到的是数组,先将数组a[],赋值给c[],然后通过两层for循环来判断b[],是否与a[]重复,如若不重复,将b[]赋值给c[]。
在开始的时候由于for循环套错位置出错,后设置一flag来判断b[]和a[]是否有重复的元素。
安徽工业大学离散数学实验报告

《离散数学》实验报告专业软件工程班级163班姓名周掌珍学号169074261授课教师杨思春二 O 一七年六月目录实验一联结词的运算实验二集合的运算实验三二元关系的性质判定实验四图的矩阵运算实验一联结词的运算一.实验目的通过上机实验操作,将命题连接词运算融入到C语言的程序编写中,一方面加强对命题连接词运算的理解,另一方面通过编程实现命题连接词运算,帮助学生复习和锻炼C语言知识,将理论知识与实际操作结合,让学生更加容易理解和记忆命题连接词运算。
二.实验原理(1) 非运算, 符号:⎤ ,当P=T时,⎤P为F, 当P=F时,⎤P为T 。
(2) 合取, 符号: ∧ , 当且仅当P和Q的真值同为真,命题P∧Q的真值才为真;否则,P∧Q的真值为假。
(3) 析取, 符号: ∨ , 当且仅当P和Q的真值同为假,命题P∨Q的真值才为假;否则,P∨Q的真值为真。
(4) 异或, 符号: ▽ , 当且仅当P和Q的真值不同时,命题P▽Q的真值才为真;否则,P▽Q的真值为真。
(5) 蕴涵, 符号: →, 当且仅当P为T,Q为F时,命题P→Q的真值才为假;否则,P→Q 的真值为真。
(6) 等价, 符号: ↔, 当且仅当P,Q的真值不同时,命题P↔Q的真值才为假;否则,P→Q的真值为真。
三.实验内容编写一个程序实现非运算、合取运算、析取运算、异或运算、蕴涵运算、等价运算。
四.算法程序内容格式:新罗马,小五号,行间距固定值18磅#include<stdio.h>int main(){char m;int P,Q;printf("请输入P,Q的真值与逻辑连接词:(P逻辑联结Q)\na:与\tb:或\tc(请先输入0):非\td:蕴含\te:等价\tf:异或\n");scanf("%d%c%d",&P,&m,&Q);switch(m){case 'a': if(P==1&&Q==1) printf("P与Q=1\n");else printf("p合取Q=0\n");break;case 'b': if(P==0&&Q==0) printf("P或Q=0\n");else printf("P或Q=1\n");break;case 'c': if(P==1) printf("非P=0\n");else printf("非P=1\n");break;case 'd': if(P==1&&Q==0) printf("P蕴含Q=0\n");else printf("P蕴含Q=1\n");break;case 'e': if(P==Q) printf("P等价Q=1\n");else printf("P等价Q=0\n");break;case 'f': if(P==Q) printf("P异或Q=0\n");else printf("P异或Q=1\n");break;}五.实验结果实验结果截图大小为:宽(10cm)×高(8cm)六.心得体会内容格式:宋体,五号,行间距固定值18磅实验二集合的运算一.实验目的集合运算主要包括并运算,交运算,相对差,对称差运算,集合论的语言适合于描述和研究离散对象及其关系,所以也是计算机科学与工程的理论基础,在程序设计、关系数据库、排队论、开关理论,形式语言和自动机理论等学科领域中都有重要的应用。
离散数学实验报告

离散数学实验报告一、实验目的离散数学是现代数学的一个重要分支,它在计算机科学、信息科学、人工智能等领域有着广泛的应用。
本次离散数学实验的目的在于通过实际操作和编程实现,深入理解离散数学中的基本概念、原理和算法,提高解决实际问题的能力,培养逻辑思维和创新能力。
二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。
同时,还使用了一些相关的数学库和工具,如 sympy 库用于符号计算。
三、实验内容1、集合运算集合是离散数学中的基本概念之一。
在实验中,我们首先定义了两个集合 A 和 B,然后进行了并集、交集、差集等运算。
通过编程实现这些运算,加深了对集合运算定义和性质的理解。
```pythonA ={1, 2, 3, 4, 5}B ={4, 5, 6, 7, 8}并集union_set = Aunion(B)print("并集:", union_set)交集intersection_set = Aintersection(B)print("交集:", intersection_set)差集difference_set = Adifference(B)print("A 与 B 的差集:", difference_set)```2、关系的表示与性质判断关系是离散数学中的另一个重要概念。
我们使用矩阵来表示关系,并通过编程判断关系的自反性、对称性和传递性。
```pythonimport numpy as np定义关系矩阵relation_matrix = nparray(1, 0, 1, 0, 1, 0, 1, 0, 1)判断自反性is_reflexive = all(relation_matrixii == 1 for i inrange(len(relation_matrix)))print("自反性:", is_reflexive)判断对称性is_symmetric = all(relation_matrixij == relation_matrixji for i in range(len(relation_matrix)) for j in range(len(relation_matrix)))print("对称性:", is_symmetric)判断传递性is_transitive = Truefor i in range(len(relation_matrix)):for j in range(len(relation_matrix)):for k in range(len(relation_matrix)):if relation_matrixij == 1 and relation_matrixjk == 1 and relation_matrixik == 0:is_transitive = Falsebreakprint("传递性:", is_transitive)```3、图的遍历图是离散数学中的重要结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连民族学院计算机科学与工程学院实验报告实验题目:集合的运算课程名称:离散数学实验类型:□演示性□验证性□操作性□设计性□综合性专业:网络工程班级:网络111班学生姓名:张山学号:2011083123实验日期:2013年12月22日实验地点:I区实验机房实验学时:8小时实验成绩:指导教师签字:年月日老师评语:1实验题目:集合的运算实验原理:1、实验内容与要求:实验内容:本实验求两个集合间的运算,给定两个集合A、B,求集合A与集合B之间的交集、并集、差集、对称差集和笛卡尔乘积。
实验要求:对于给定的集合A、B。
用C++/C语言设计一个程序(本实验采用C++),该程序能够完成两个集合间的各种运算,可根据需要选择输出某种运算结果,也可一次输出所有运算结果。
2、实验算法:实验算法分为如下几步:(1)、设计整体框架该程序采取操作、打印分离(求解和输出分开)的思想。
即先设计函数求解各部分运算并将相应结果传入数组(所求集合)中,然后根据需要打印运算结果。
(2)、建立一个集合类(Gather)类体包括的数组a、b、c、d、e、f、g分别存储集合A、B以及所求各种运算的集合。
接口(实现操作的函数)包括构造函数,菜单显示函数,求解操作函数,打印各种运算结果等函数。
(3)、设计类体中的接口构造函数:对对象进行初始化,建立集合A与集合B。
菜单显示函数:设计提示选项,给使用者操作提示。
操作函数:该函数是程序的主题部分,完成对集合的所有运算的求解过程,并将结果弹入(存入)对应数组(集合)中,用于打印。
具体操作如下:21*求交集:根据集合中交集的定义,将数组a、b中元素挨个比较,把共同元素选出来,并存入数组c(交集集合)中,即求得集合A、B的交集。
2*求并集:根据集合中并集的定义,先将数组a中元素依次存入数组g(并集集合)中,存储集合A中某元素前,先将其与已存入g中的元素依次比较,若相同则存入下一个元素,否则直接存入g中,直到所有A中元素存储完毕。
接着把b中元素依次存入数组g(并集集合)中,存储前将b中每个元素依次与已存入数组g中的集合A的元素比较,若数组g中没有与该元素相同的元素,则将该元素存入g(并集集合)中,否则进行下一次比较,直到所有b中元素比较并存储完毕,即求得A与B的并集。
3*求差集:根据集合中差集的定义知,差集分为两部分,A对B的差集(数组d)和B对A的差集(e)。
设计求解A对B的差集,将集合A中元素依次与B中元素比较,若B中无元素与该元素相同,则将其存入数组d中(同时删除d中相同的元素,操作方法与求并集时删除相同元素类似),否则进行下一轮比较,直到A中所有元素比较完毕,即求得A对B的差集(数组d)。
求解B对A的差集方法与求解A对B的差集类似,这里不再重复。
4*求对称差:根据集合中对称差集的定义,将3*中所求两部分差集求并集并存入数组f中即可。
操作过程与求并集相似,这里不再重复。
5*求笛卡尔乘积:根据集合中笛卡尔乘积集的定义,分为A*B和B* A。
先设计A* B是我算法,将a中元素循环依次与b中元素配对即可。
求B* A与求A* B 类似,这里不再重复。
实验步骤:一、分析实验阅读实验指导书和离散数学课本,充分理解整个实验的实验内容及要求,以便对实验进行科学的设计。
然后对整个实验进行“解剖”,即把整个实验系统地分成若干 3部分,分别针对各个部分进行分析,最后预测程序设计过程中可能遇到的问题及解决方案。
二、实验设计基于第一步的实验分析制定实验设计的整体方案,然在计算机上设计整体框架,接着依据最初得到的方案有序的设计该程序的各个分支。
最后将分支分别填入主体框架的相应位置,检查设计是否有书写错误。
没有则进行调试,有则修改。
重复上述过程,直到没有书写错误。
三、调试程序对第二步设计的程序进行编译链接,对多组具有代表性的数据进行测试,检查程序是否有逻辑错误和程序漏洞。
若无,则进行下一步程序优化,否则,续修改调试,直至没有逻辑错误和漏洞。
四、优化程序在前面设计的程序的基础上,查找是否有可以简化程序或是有缺陷的地方,亦或是否有可以添加的功能。
有,则进行相应的修改,对整个程序进行优化升级,直至趋于完善。
五、处理数据输入:4运行结果:六、对实验进行归纳、总结,撰写实验报告。
实验记录:一、集合初始化数据输入:1、第一行输入m2、第二行输入m个整数3、第三行输入n4、第四行输入n个整数5输入数据的含义:1、m:集合A的元素个数2、n:集合B的元素个数3、m个整数:集合A中的元素4、n个整数:集合B中的元素二、求解输入:使用者可以根据提示输入I、U、C、D、K、A、P、E。
其含义如下:1、I:输出交集2、U:输出并集3、C:输出差集4、D:输出对称差5、K:输出笛卡尔乘积6、A:输出所有集合运算结果7、P:打印集合A和集合B8、E:退出系统一、实验过程中遇到的问题及其解决过程实验过程遇到的问题很多,主要有一下问题。
首先是实验的分析,最初没有对实验原理理解透彻,在求差集的时候没考虑到A、B间相互求差集;于是在原有的基础上对程序添加缺少的部分。
其次是对整个程序的框架设计,最初设计是顺序求解并输出集合A、B的交、并、差、对称差及笛卡尔乘积。
但这种设计太低级,不能根据使用者的意愿求解集合的运算;于是对原来的程序上“大动干戈”,把它的整体结构做调整,将原来混合不清、顺序死板的设计改成操作、打印分离的“动态”结构。
第三是对数据的处理不够完善,比如在最初设计的程序中,当集合中含有相同元素时,程序不能完善处理,结果中会有重复元素。
于是在程序中添加一个删除相同元素的操作。
最后便是功能的完善问题了,相比最终程序,缺乏一些人性化的功能。
于是在相应位置添加功能,使程序完善。
6二、实验结束时的程序清单及运行结果结果还是比较完善的,试运行数据如下:输入:51 123 451 1 a b 5A输出:两个集合的交集是:1两个集合的并集是:1 2 3 4 5 a b c两个集合的差集A-B是:2 3 4两个集合的差集B-A是:a b 5两个集合的对称差集是:2 3 4 5 a b两个集合的笛卡尔乘积是:A*B:<1,1> <1,1> <1,a> <1,b> <1,5><1,1> <1,1> <1,a> <1,b> <1,5><2,1> <2,1> <2,a> <2,b> <2,5><3,1> <3,1> <3,a> <3,b> <3,5><4,1> <4,1> <4,a> <4,b> <4,5>B*A:<1,1> <1,1> <1,2> <1,3> <1,4><1,1> <1,1> <1,2> <1,3> <1,4><a,1> <a,1> <a,2> <a,3> <a,4>7<b,1> <b,1> <b,2> <b,3> <b,4><5,1> <5,1> <5,2> <5,3> <5,4>三、实验总结我选择的实验题目很简单,因此试验用时多,但通过实验的规划、各部分设计、以及整体的测试优化,不仅提高了我的程序设计水平,还让我对离散数学有了全新的认识,可谓是一举多得。
之前我一直以为数学就是在书本上写写算算,玩弄数字游戏,压根儿没想过离散数学也能在程序设计上大显身手。
这次试验让我再次体会到了设计算法的重要性和对细节的把握,而算法,就是对数据的处理。
那么就要求对所涉及的数学知识牢牢掌握,不能似是而非,不然设计的算法是残缺的。
甚至漏洞百出,因而放弃之前的算法推倒重来。
本学期已学过数据结构,可谓程序设计的法宝,运用的好可以得到简便高效的方案,一直是我写代码的不二法宝。
现在我才发现离散数学对计算机程序设计也非常重要。
它不仅介绍了数据结构里面的一些内容,还涉及数字逻辑等方面的的知识,掌握好离散数学我们就能快速地想出高效的解决方案。
终于理解入学时学长(姐)们说的“数据结构、离散数学和数字逻辑,是你们计算机生涯的必修课,走得有多远全看你对它们的掌握”。
8实验报告课程名称:离散数学集合的运算实验题目:实验类型:操作型指导老师:姜楠学院:计算机科学与工程学院专业:网络工程121班级:网络班姓名:张山2011083123学号:12年2013日期:月日22910。