集合的交运算
假设集合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;
}