《集合运算-离散数学·实验报告.docx》由会员分享,可在线阅读,更多相关《集合运算-离散数学·实验报告.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除HUNAN UNIVERSITY离散数学课程实验报告题目:集合运算学生姓名: 学生学号:专业班级:完成日期: 一 实验目的1. 熟悉集合的交,并,差,对称差和直积等集合运算;2. 使用c+语言工具解决集合的运算问题;二 实验内容编写程序实现集合的交,并,差,对称差和直积集合运算三 实验过程 算法分析1. 集合的交:使用两个字符串数组A和B存储两个集合,依次遍历两个数组,找到相同的元素,就输出该元素,直到两个数组都遍历完毕为止,输出的所有的元素就是这两个集合的交;2. 集合的并:依次遍历这两个数组,在第二个数组中,若找到与第一个数组中的某个元素相同
2、的元素时,在第二个数组中删除该元素,最后输出第一个数组和第二个数组的所有元素,得到的结果即集合的并;3. 集合的差:遍历数组A和B,在数组A中,若找到与B中某一元素相同的元素,则在数组A中删除该元素,最后一次输出数组A即可;4. 集合的对称差:定义一个新的字符串数组C,将A的值全部赋给C(C=A).。遍历数组A和B,若在A中找到与B中某一元素相同的元素,则在A中删除该元素;遍历C与B,若在B中找到与C中某一元素相同的元素,则删除B中的该元素,最后依次遍历输出数组A和B即可;5. 集合的直积:从数组A的第一个元素开始,每输出A中的一个元素的同时,对应输出B中所有的元素,中间用连接,直到A中所有元
3、素都输出完毕。最后得到的序列便是A和B的直积 流程图 实验数据和分析 测试数据:请输入第一个集合: a b 1 4 请输入第二个集合: b g 4 两个集合的交为:b 4 两个集合的并为:a b 1 4 g 第一个集合-第二个集合为:a 1 两个集合的对称差为:a 1 g 两个集合的直积为: 按照实验的算法设计程序,实现集合的各种基本运算。 实验代码#includeusing namespace std;#includevoid fun1(char, char);void fun2(char, char);void fun3(char, char);void fun4(char, char);
4、void fun5(char, char);void Delete(char,int n);int main()char a20, b20, c; while (1)cin.sync();cout 请输入集合一:n;gets_s(a);cout 请输入集合二:n;gets_s(b);cout 请选择:n;cout c;if (c = F) return 0;cout 其结果为:n;switch (c)case A:fun1(a, b); break;caseB:fun2(a, b); break;caseC:fun3(a, b); break;caseD:fun4(a, b); break;c
5、aseE:fun5(a, b); break;default:cout 输入有误。; break;cout endl;void Delete(char a,int n)int s1 = strlen(a);for (int i = n; i s1-1; i+)ai = ai + 1;as1 - 1 = 0;void fun1(char a, char b)int s1 = strlen(a);int s2 = strlen(b);int i = 0,j=0;for (i = 0; i s1; i+)for (j = 0; j s2; j+)if (ai = bj)cout ai ;void f
6、un2(char a, char b)int s1 = strlen(a);int s2 = strlen(b);int i, j;for ( i = 0; i s2; i+)for (j = 0; j s1; j+)if (bi = aj)Delete(b, i);for (i = 0; i s1; i+)cout ai ;for (j = 0; j strlen(b); j+)cout bj ;void fun3(char a, char b)int s1 = strlen(a);int s2 = strlen(b);int i, j;for (i = 0; i s1; i+)for (j
7、 = 0; j s2; j+)if (ai = bj)Delete(a, i);for (i = 0; i strlen(a); i+)cout ai ;void fun4(char a, char b)int i, j;char c20;for (i = 0; i strlen(a); i+)ci = ai;for (i = 0; i strlen(a); i+)for (j = 0; j strlen(b);j+)if (ai = bj)Delete(a, i);for (i = 0; i strlen(c); i+)for (j = 0; j strlen(b);j+)if (ci = bj)Delete(b, j);for (i = 0; i strlen(a); i+)cout ai ;for (j = 0; j strlen(b); j+)cout bj ;void fun5(char a, char b)int s1 = strlen(a);int s2 = strlen(b);int i, j;for (i = 0; i s1; i+)for (j = 0; j s2; j+)printf(, ai, aj);cout ;【精品文档】第 5 页
限制150内