假设本题集合的元素只出现a,b,c,d,e,f,g,h等8个字符。写程序完成任意两个集合x与y的 交\并\补 \差\对称差 等运算。
#include<iostream>
using namespace std;
int main()
{
cout << "输入第一个元素集合的元素个数:";
int num1;
cin >> num1;
cout << "请输入第一个集合中所含元素(限定:仅可用a,b,c,d,e,f,g,h)" << endl;
char a1[50];
for (int i = 1; i <= num1; i++)
cin >> a1[i];
cout << "请输入第二个元素集合的元素个数:";
int num2;
cin >> num2;
char a2[50];
cout << "请输入第一个集合中所含元素(限定:仅可用a,b,c,d,e,f,g,h)" << endl;
for (int i = 1; i <= num2; i++)
cin >> a2[i];
char c[50];
int k = 0;
cout << "集合一和集合二的并集为:";
for (int i = 1; i <= num1; i++)
cout << a1[i] << " ";
for (int j = 1; j <= num2; j++)
{
bool b = true;
for (int i2 = 1; i2 <= num1; i2++)
if (a2[j] == a1[i2])
{
b = false;
k++;
c[k] = a2[j];
break;
}
if (b) cout << a2[j] << " ";
}
cout << endl;
cout << "集合一和集合二的交集为:";
for (int i = 1; i <= k; i++)
cout << c[i] << " ";
cout << endl;
cout << "集合一的补集为:";
char d[] = { 'a','b','c','d','e','f','g','h' };
for (int i = 0; i < 8; i++)
{
bool b = true;
for (int j = 1; j <= num1; j++)
if (d[i] == a1[j])
{
b = false;
}
if (b) cout << d[i] << " ";
}
cout << endl;
cout << "集合二的补集为:";
for (int i = 0; i < 8; i++)
{
bool b = true;
for (int j = 1; j <= num2; j++)
if (d[i] == a2[j])
{
b = false;
}
if (b) cout << d[i] << " ";
}
cout << endl;
cout << "集合一减集合二的差为:";
char g[50];
int v = 0;
for (int i = 1; i <= num1; i++)
{
bool b = true;
for (int j = 1; j <= num2; j++)
if (a1[i] == a2[j])
{
b = false;
}
if (b) {
v = v + 1;
g[v] = a1[i];
cout << a1[i] << " ";
}
}
cout << "集合二减集合一的差为:";
char f[50];
int u = 0;
for (int i = 1; i <= num1; i++)
{
bool b = true;
for (int j = 1; j <= num2; j++)
if (a2[i] == a1[j])
{
b = false;
}
if (b) {
u = u + 1;
f[u] = a2[i];
cout << a2[i] << " ";
}
}
cout << endl;
cout << "请输入集合一减集合二差集中元素个数:";
int c1_num;
cin >> c1_num;
cout << "请输入集合一减集合二差集中元素个数:";
int c2_num;
cin >>c2_num;
cout << "两个集合的对称差为:";
for (int i = 1; i <= c1_num; i++)
{
cout << f[i]<<" ";
}
for (int i = 1; i <= c2_num; i++)
{
cout << g[i] << " ";
}
system("pause");
}