#include<iostream>
using namespace std;
typedef struct
{
int *data;
int length;
}Set;
void create(Set &s,int n)
{ s.data=new int[n];
for(int i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"个的数据:";
cin>>s.data[i];
}
s.length=n;
}
void showSet(Set s)
{ for(int i=0;i<s.length;i++)
cout<<s.data[i]<<" ";
}
bool inset(Set s,int e)
{
for(int i=0;i<s.length;i++)
{
if(s.data[i]==e)
return true;
break;
}}
}
void add(Set s1,Set s2,Set &s3)
{
s3.data=new int[s1.length +s2.length];
s3.length = 0;
int i=0,j=0;
for(i=0;i<s1.length;i++){
s3.data[i]=s1.data[i];
s3.length++;
}
for(j=0;j<s2.length;j++){
for(i=0;i<s3.length;i++){
if(s2.data[j]==s3.data[i]){
break;
}
}
if(s2.data[j]!=s3.data[i]){
s3.data[s3.length]=s2.data[j];
s3.length++;
}
}
}
void sub(Set s1,Set s2,Set &s3)
{ int i;
s3.data=new int[s1.length];
s3.length=0;
for(i=0;i<s1.length;i++)
for(int j=0;j<s2.length;j++)
//if(s1.data[i]!=s2.data[j])
if(!inset(s2,s1.data[i]))
{
s3.data[s3.length]=s1.data[i];
s3.length++;
}
}
void intersection(Set s1,Set s2,Set &s3)
{
s3.data=new int[s1.length];
s3.length=0;
for(int i=0;i<s1.length;i++)
{
for(int j=0;j<s2.length;j++){
if(s1.data[i]==s2.data[j])
{
s3.data[s3.length]=s1.data[i];
s3.length++;
}
}}}
int main()
{ Set s1,s2,s3,s4,s5;
int m,n;
cout<<"请输入你第一个集合想要输入的数据的个数:"<<endl;
cin>>m;
create(s1,m);
cout<<"请输入你第二个集合想要输入的数据的个数:"<<endl;
cin>>n;
create(s2,n);
showSet(s1);
cout<<endl;
cout<<"两个集合的并集为:"<<endl;
add(s1,s2,s3);
showSet(s3);
cout<<endl;
cout<<"两个集合的差集为:"<<endl;
sub(s1,s2,s4);
showSet(s4);
cout<<endl;
cout<<"两个集合的交集为:"<<endl;
intersection(s1,s2,s5);
showSet(s5);
}
不知道为啥这个差集错在哪里了,就是得不出来相应得结果,想求各位大佬们帮助!