- 编写程序实现两个整数集合的基本运算:.S1+S2集合并运算 .S1-S2集合差运算 .S1*S2集合交运算 【实验要求】 输入整数集合(24135)和{2510},输出前者元素个数以及它们进行集合并、差、交运算后的结果,实现输入和输出运算符重载。 . Set 类中包含 int len ; int elem [10];
时间: 2024-02-12 16:06:51 浏览: 78
好的,我理解了你的问题。以下是一个基于你给出的 Set 类的 C++ 程序,实现了集合的并、差和交运算。它还包括输入和输出运算符的重载。
```c++
#include <iostream>
using namespace std;
class Set {
public:
int len;
int elem[10];
Set() {
len = 0;
for (int i = 0; i < 10; i++)
elem[i] = 0;
}
friend istream& operator >> (istream& in, Set& s) {
cout << "请输入集合元素个数: ";
in >> s.len;
cout << "请输入集合元素: ";
for (int i = 0; i < s.len; i++)
in >> s.elem[i];
return in;
}
friend ostream& operator << (ostream& out, const Set& s) {
out << "集合元素个数为: " << s.len << endl;
out << "集合元素为: { ";
for (int i = 0; i < s.len; i++)
out << s.elem[i] << " ";
out << "}" << endl;
return out;
}
Set operator + (const Set& s) {
Set res;
res.len = len;
for (int i = 0; i < len; i++)
res.elem[i] = elem[i];
for (int i = 0; i < s.len; i++) {
bool flag = false;
for (int j = 0; j < len; j++) {
if (s.elem[i] == elem[j]) {
flag = true;
break;
}
}
if (!flag) {
res.elem[res.len] = s.elem[i];
res.len++;
}
}
return res;
}
Set operator - (const Set& s) {
Set res;
for (int i = 0; i < len; i++) {
bool flag = false;
for (int j = 0; j < s.len; j++) {
if (elem[i] == s.elem[j]) {
flag = true;
break;
}
}
if (!flag) {
res.elem[res.len] = elem[i];
res.len++;
}
}
return res;
}
Set operator * (const Set& s) {
Set res;
for (int i = 0; i < len; i++) {
for (int j = 0; j < s.len; j++) {
if (elem[i] == s.elem[j]) {
res.elem[res.len] = elem[i];
res.len++;
break;
}
}
}
return res;
}
};
int main() {
Set s1, s2, s3;
cout << "请输入第一个集合: " << endl;
cin >> s1;
cout << "请输入第二个集合: " << endl;
cin >> s2;
cout << endl << "第一个集合为: " << endl;
cout << s1;
cout << endl << "第二个集合为: " << endl;
cout << s2;
s3 = s1 + s2;
cout << endl << "两个集合的并为: " << endl;
cout << s3;
s3 = s1 - s2;
cout << endl << "两个集合的差为: " << endl;
cout << s3;
s3 = s1 * s2;
cout << endl << "两个集合的交为: " << endl;
cout << s3;
return 0;
}
```
这个程序中,我们定义了一个 Set 类,其中包含了集合的元素个数和元素数组。我们为输入运算符和输出运算符重载了 >> 和 << 运算符,分别用于输入和输出 Set 对象。我们还重载了 +、- 和 * 运算符,分别用于求集合的并、差和交。
在 main 函数中,我们首先创建了两个空的 Set 对象 s1 和 s2,并通过输入运算符重载从用户那里获取了集合的元素。然后我们使用重载的运算符求出了两个集合的并、差和交,并输出它们的结果。
你可以将上面的代码复制到你的 C++ 编译器中运行,体验一下集合运算的效果。
阅读全文