C++ 实现整数集合类:并集、交集运算
C++ 实现整数集合类:并集、交集运算
**问题描述:**实现整数集合类。
类的定义在前缀中,主函数在后缀中。请补全没有定义的成员函数。
说明:
- 类中含两个私有变量,分别表示集合中元素的个数和集合中元素组成的数组。
- 用
Set函数输入,Show函数输出结果(按从小到大的顺序输出各个元素)。 - 实现运算符
+的重载,表示两个集合的并集。 - 实现运算符
-的重载,表示两个集合的交集。
提示:
- 集合中不可出现重复元素。
- 空集时,输出
empty。
输入输出样例1
输入
3 (表示第一个集合的元素个数)
1 2 3 (表示第一个集合的所有元素)
4 (表示第二个集合的元素个数)
1 2 5 6 (表示第二个集合的所有元素)
输出
1 2 3 5 6 (两个集合的并集)
1 2 (两个集合的交集)
输入输出样例2
输入
3
1 2 3
3
1 2 3
输出
1 2 3
1 2 3
前缀代码:
#include<iostream>
using namespace std;
class Cassemblage
{
private :
int n;
int a[1000];
public :
void Set(int a1[] ,int n1)
{
n=n1;
for(int i=0;i<n;i++)
{
a[i]=a1[i];
}
}
Cassemblage operator+(Cassemblage z);
Cassemblage operator-(Cassemblage z);
void Show()
{
int i,j,t;
if(n>0)
{
for (i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<' ';
}
}
else
{
cout<<'empty';
}
}
};
后缀代码:
int main( )
{
Cassemblage z1, z2, x3;
int i, n1, n2, a1[1000], a2[1000];
cin >> n1;
for(i=0; i<n1; i++)
{
cin >> a1[i];
}
z1.Set(a1, n1);
cin >> n2;
for(i=0; i<n2; i++)
{
cin >> a2[i];
}
z2.Set(a2, n2);
x3=z1+z2;
x3.Show();
cout << endl;
x3=z1-z2;
x3.Show();
return 0;
}
参考答案:
#include<iostream>
using namespace std;
class Cassemblage
{
private :
int n;
int a[1000];
public :
void Set(int a1[] ,int n1)
{
n=n1;
for(int i=0;i<n;i++)
{
a[i]=a1[i];
}
}
void Show()
{
int i,j,t;
if(n>0)
{
for (i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<' ';
}
}
else
{
cout<<'empty';
}
}
Cassemblage operator+(Cassemblage z)
{
Cassemblage temp;
int i=0,j=0,k=0;
while(i<n&&j<z.n)
{
if(a[i]<z.a[j])
{
temp.a[k++]=a[i++];
}
else if(a[i]>z.a[j])
{
temp.a[k++]=z.a[j++];
}
else
{
temp.a[k++]=a[i++];
j++;
}
}
while(i<n)
{
temp.a[k++]=a[i++];
}
while(j<z.n)
{
temp.a[k++]=z.a[j++];
}
temp.n=k;
return temp;
}
Cassemblage operator-(Cassemblage z)
{
Cassemblage temp;
int i=0,j=0,k=0;
while(i<n&&j<z.n)
{
if(a[i]<z.a[j])
{
i++;
}
else if(a[i]>z.a[j])
{
j++;
}
else
{
temp.a[k++]=a[i++];
j++;
}
}
temp.n=k;
return temp;
}
};
int main( )
{
Cassemblage z1, z2, x3;
int i, n1, n2, a1[1000], a2[1000];
cin >> n1;
for(i=0; i<n1; i++)
{
cin >> a1[i];
}
z1.Set(a1, n1);
cin >> n2;
for(i=0; i<n2; i++)
{
cin >> a2[i];
}
z2.Set(a2, n2);
x3=z1+z2;
x3.Show();
cout << endl;
x3=z1-z2;
x3.Show();
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oOUv 著作权归作者所有。请勿转载和采集!