离散数学实验(三)集合的基本运算

集合的交运算

    假设集合E包含A,B两个任意子集,称集合E为全集,集合的交运算为集合A,B中相同元素的集合,记为A∩B。若集合A,B之间无相同的元素,则交运算的结果为空集。例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A∩B={3,4}。

集合的并运算

    假设集合E包含A,B两个任意子集,称集合E为全集,集合的并运算为集合A,B包含的所有元素去除重复元素后的集合,记为A∪B,例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A∪B={1,2,3,4,5,6}。

集合的差运算

    假设集合E包含A,B两个任意子集,称集合E为全集,集合的差运算为集合A去除集合B中与集合A相同元素的集合,记为A−B。例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A−B={1,2}

集合的补运算

    假设有全集E,集合A为全集E中的任意子集,集合A的补运算为不在集合A中的其他全集元素,记为Aˉ=E−A。例如:全集E={1,2,3,4,5},集合A={1,2,3,4},则E-A={5}

集合的对称差

    假设集合E包含A,B两个任意子集,称集合E为全集,集合的对称差运算为集合A,B的并集中去除集合A,B中相同的元素,记为A⊕B=(A∪B)−(A∩B)。例如:全集为全体整数,集合A={1,2,3,4},集合B={3,4,5,6},则A⊕B={1,2,5,6}

编程要求

    根据提示,练习集合的基本运算法则。

提示:

例子:全集为E={1,2,3,4,5},集合A,B的互为补集,验证E-A=B:

#include<iostream>
using namespace std;
int PanDuan(int *a, int n, int b) //判断b是否在a中
{
	int i;
	for (i = 0; i < n; i++) {
		if (b == a[i])
			return 1;
	}
	return 0;
}
int main()
{
	int n, m;
	int i, j;
	int a[100], b[100],c[100];
	int cnt = 0;
	cin >> n;
	for (i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	cin >> m;
	for (i = 0; i < m; i++)
	{
		cin >> b[i];
	}
	for (i = 0; i < m; i++)
	{
		if (PanDuan(a, n, b[i]))
		{
			c[cnt++] = b[i];
		}
	}
	cout << "交集为:" << endl;
	for (i = 0; i < cnt; i++)
	{
		cout << c[i] << ' ';
	}
	cout << endl << "a-b差为:" << endl;
	for (i = 0; i < cnt; i++)
	{
		if (PanDuan(a, n, c[i]))
		{
			int qwq;
			for (int k = 0; k < n; k++)
			{
				if (c[i] == a[k]) qwq = k;
			}
			for (j = qwq; j <= n; j++)
			{
				a[j] = a[j + 1];
				
			}n--;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
	cout << endl << "b对于a的补集为:" << endl;
	for (i = 0; i < cnt; i++)
	{
		if (PanDuan(a, n, c[i]))
		{
			int qwq;
			for (int k = 0; k < n; k++)
			{
				if (c[i] == a[k]) qwq = k;
			}
			for (j = qwq; j <= n; j++)
			{
				a[j] = a[j + 1];

			}n--;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
	cout << endl << "并集为:" << endl;
	for (i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
	for(i = 0; i < m; i++)
	{
		cout << b[i] << " ";
	}
	cout << endl << "对称差:" << endl;
	for (i = 0; i < cnt; i++)
	{
		if (PanDuan(b, m, c[i]))
		{
			int qwq;
			for (int k = 0; k < m; k++)
			{
				if (c[i] == b[k]) qwq = k;
			}
			for (j = qwq; j <= m; j++)
			{
				b[j] = b[j + 1];

			}m--;
		}
	}
	for (i = 0; i < n; i++)
	{
		cout << a[i] << " ";
	}
	for (i = 0; i < m; i++)
	{
		cout << b[i] << " ";
	}
	return 0;
}

 

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离散数学中,集合是一个非常基础且重要的概念。集合的简单运算包括交、并、差、补等。下面,我将介绍这些集合运算实验原理和过程。 实验原理: 在集合运算中,我们需要用到两个集合(或多个集合),并根据运算符进行相应的操作。具体而言,交运算需要找出两个集合的交集;并运算需要找出两个集合的并集;差运算需要找出第一个集合与第二个集合的差集;补运算需要找出一个集合相对于全集的补集。 实验过程: 1. 交运算 假设有两个集合 A 和 B,它们的交集可以表示为 A ∩ B。我们可以通过以下步骤进行交运算实验: - 准备两个集合 A 和 B,记录它们的元素。 - 找出 A 和 B 中的共同元素,即它们的交集。 - 将交集元素组成一个新的集合 C,即 C = A ∩ B。 2. 并运算 假设有两个集合 A 和 B,它们的并集可以表示为 A ∪ B。我们可以通过以下步骤进行并运算实验: - 准备两个集合 A 和 B,记录它们的元素。 - 将 A 和 B 中的元素合并,去除重复元素,即得到它们的并集。 - 将并集元素组成一个新的集合 C,即 C = A ∪ B。 3. 差运算 假设有两个集合 A 和 B,它们的差集可以表示为 A - B。我们可以通过以下步骤进行差运算实验: - 准备两个集合 A 和 B,记录它们的元素。 - 找出 A 中与 B 不同的元素,即得到它们的差集。 - 将差集元素组成一个新的集合 C,即 C = A - B。 4. 补运算 假设有一个集合 A,它的补集可以表示为 A'。我们可以通过以下步骤进行补运算实验: - 准备一个集合 A,记录它的元素。 - 准备一个全集 U,它包含所有可能的元素。 - 找出 U 中与 A 不同的元素,即得到 A 相对于 U 的补集。 - 将补集元素组成一个新的集合 C,即 C = A'。 总结: 以上就是离散数学集合运算实验原理和过程。通过这些实验,我们可以更好地理解集合运算的概念和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值