您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 集合的运算和笛卡尔乘积
1大连民族学院计算机科学与工程学院实验报告实验题目:集合的运算和笛卡尔乘积课程名称:离散数学实验类型:□演示性□验证性□设计性□操作性□综合性专业:网络工程班级:112班学生姓名:学号:2011083207实验日期:2012年12月12日实验地点:五机房实验学时:10学时实验成绩:指导教师签字:年月日2一、实验题目:集合的运算和笛卡尔乘积二、实验原理:1.集合的笛卡尔乘积:i.实验内容:已知所给集合A和B,求A与B的笛卡儿乘积C(C=A×B)。ii.实验要求:复习笛卡儿乘积的定义,实验由一人一组完成。所编程序能够通过编译,并能够实现求两个给定集合的笛卡儿乘积。2.集合的并集的实验原理:i.实验内容:已知所给集合A和B,求A与B的并集C(C=A∪B)。ii.实验要求:复习集合运算中并集的定义,实验由一人一组完成。所编程序能够通过编译,并能够实现求两个给定集合的并集。3.集合的交集的实验原理:i.实验内容:已知所给集合A和B,求A与B的交集C(C=A∩B)ii.实验要求:复习集合运算中交集的定义,实验由一人一组完成。所编程序能够通过编译,并能够实现求两个给定集合的交集。4.集合的差集的实验原理:i.实验内容:已知所给集合A和B,求A与B的差集C(C=A-B)。ii.实验要求:3复习集合运算中差集的定义,实验由一人一组完成。所编程序能够通过编译,并能够实现求两个给定集合的差集。三、实验步骤:1.笛卡尔乘积的实验步骤及注意事项:(1)将集合A的元素个数送入N。(2)将集合B的元素个数送入M。(3)1i。(4)若iN,则结束。(5)1j。(6)若jM,则转(9)。(7)ai,bjC。(8)j+1j,转(6)。(9)i+1i,转(4)。2.集合的并集的实验步骤及注意事项:(1)集合B的元素个数送M,集合A的元素个数送N。(2)AC。(3)1i。(4)若iM,则结束。(5)否则,对于j=1,2,…….,n,判断:bi=aj,若相等,则转(7)。(6)否则,biC。(7)i+1i,转(4)。3.集合的交集的实验步骤及注意事项:(1)将集合A的元素送N。(2)1i(3)若iN,则结束。(4)否则,将ai与集合B中的每个元素进行比较,若ai与集合B中所有元素均不相同,则转(6)。(5)否则,aiC。(6)i+1i,转(3)。4.集合的差集的实验步骤及注意事项:(1)将集合A的元素个数送N。4(2)1i。(3)iN,则结束。(4)否则,将ai与集合B中的每个元素相比较,若ai与集合B中的某个元素相同,则转(6)(5)否则,aiCi+1i,转(3)。四、实验操作:1.实验中用到的变量:A[30]:用来放集合A和集合BB[20]:用来放集合A和集合B的交集q[30]:用来记录集合A最初的输入数据Count,count1,count2:用来控制“,”的输出2.程序源代码:#includeiostreamusingnamespacestd;intmain(){charp[30],A[20],q[30];intc,d,y,h,count=0,count1=0,count2=0;cout输入集合A的个数:endl;cinc;coutendl;cout输入集合A的元素:endl;for(inti=0;ic;i++){cinp[i];q[i]=p[i];}coutendl;cout输入集合B的个数:endl;cind;coutendl;cout输入集合B的元素:endl;for(intk=c;kc+d;k++){cinp[k];q[k]=p[k];}coutendl;5for(y=0,h=0;yc+d;y++){for(intm=y+1;mc+d;m++){if(p[y]!=-1){if(p[y]==p[m]){A[h]=p[y];p[m]=-1;h++;break;}}}}cout集合A和B的笛卡尔乘积:endlendl;coutA×B=;cout'{';for(intr=0;rc;r++)for(intt=c;tc+d;t++){cout'';coutq[r]','q[t];cout;count2++;if(count2c*d)cout',';}cout'}';coutendlendl;cout集合A和B的并集:endlendl;coutA∪B=;cout'{';for(intj=0;jc+d;j++)if(p[j]!=-1){coutp[j];count++;if(countc+d-h)cout',';}cout'}';6coutendlendl;cout集合A和B的交集:endlendl;coutA∩B=;if(h0){cout'{';for(intl=0;lh;l++){coutA[l];if(h-1l)cout',';for(intn=0;nc;n++)if(q[n]==A[l])q[n]=-1;}cout'}';coutendl;}elsecoutΦendl;coutendl;cout集合A和B的差集为:endlendl;coutA-B=;if(c!=h){cout'{';for(intg=0;gc;g++){if(q[g]!=-1){coutq[g];count1++;if(count1c-h)cout',';}}cout'}';coutendl;}elsecoutΦendl;coutendl;return0;}7五、实验结果记录:数据的输入样例:数据的输出样例:1.当两个集合的交集为空时:82.当两个集合的差集为空时:六、实验总结9通过编写程序更进一步了解了集合的几个性质,相比看书练习记忆更深刻理解更透彻。在编写程序过程中添加了自己喜欢的元素增添了编程乐趣,从而编程能力也得到一定的锻炼。在此过程中也发现了自己思考问题的很多不足,编程方法的多样化和编程细节错误等等。以后会在实验中多加改进。参考文献1.《离散数学》屈婉玲等编2.《C++程序设计》谭浩强编清华大学出版社3.《C语言程序设计》谭浩强编清华大学出版社
本文标题:集合的运算和笛卡尔乘积
链接地址:https://www.777doc.com/doc-5278656 .html