题目描述
运用c++实现两个集合的运算,集合的元素采用大写字母A~Z的形式。要求实现以下功能:
(1)集合的输入:自动去掉重复和非法的字符;
(2)集合的显示:输出集合的全部元素;
(3)输出一个给定集合的补集;
(4)输出两个给定集合的交集和并集。
案例代码
下面是一个用 C++ 实现的简单案例,实现了描述的功能:
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
// 函数声明
set<char> inputSet();
void displaySet(const set<char>& s);
set<char> complement(const set<char>& s);
set<char> intersection(const set<char>& s1, const set<char>& s2);
set<char> unionSet(const set<char>& s1, const set<char>& s2);
int main() {
// 输入集合
cout << "Enter set A:\n";
set<char> setA = inputSet();
cout << "Enter set B:\n";
set<char> setB = inputSet();
// 显示集合
cout << "Set A: ";
displaySet(setA);
cout << "Set B: ";
displaySet(setB);
// 输出补集
cout << "Complement of set A: ";
displaySet(complement(setA));
cout << "Complement of set B: ";
displaySet(complement(setB));
// 输出交集和并集
cout << "Intersection of set A and set B: ";
displaySet(intersection(setA, setB));
cout << "Union of set A and set B: ";
displaySet(unionSet(setA, setB));
return 0;
}
// 输入集合
set<char> inputSet() {
set<char> s;
string input;
cout << "Enter elements (A-Z, separated by spaces): ";
getline(cin, input);
// 去掉重复和非法字符
for (char c : input) {
if (isalpha(c) && isupper(c)) {
s.insert(c);
}
}
return s;
}
// 显示集合
void displaySet(const set<char>& s) {
cout << "{ ";
for (char c : s) {
cout << c << " ";
}
cout << "}\n";
}
// 补集
set<char> complement(const set<char>& s) {
set<char> compSet;
for (char c = 'A'; c <= 'Z'; ++c) {
if (s.find(c) == s.end()) {
compSet.insert(c);
}
}
return compSet;
}
// 交集
set<char> intersection(const set<char>& s1, const set<char>& s2) {
set<char> interSet;
for (char c : s1) {
if (s2.find(c) != s2.end()) {
interSet.insert(c);
}
}
return interSet;
}
// 并集
set<char> unionSet(const set<char>& s1, const set<char>& s2) {
set<char> uniSet = s1;
uniSet.insert(s2.begin(), s2.end());
return uniSet;
}
这个程序首先让用户输入两个集合,然后分别实现了输入集合、显示集合、补集、交集和并集等功能。
© 版权声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:317608094@qq.com
THE END
暂无评论内容