//输入集合A、B和全集C,求两集合的交集、并集、补集、差集 /* 并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 补集:A的补集C-B */ /* 例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5} AB并集为={1,2,3,4} 交集为={2,3} A补集={4,5} AB差集为={1} */ #include <iostream> #include <vector> using namespace std; int main() { vector<int> A,B,C; int temp; cout<<"input A,finished by a character"<<endl; while(cin>>temp) A.push_back(temp); cin.clear() ;//清除错误状态 cin.ignore() ;//跳过无效数据 cout<<"input B,finished by a character"<<endl; while(cin>>temp) B.push_back(temp); cin.clear() ; cin.ignore() ; cout<<"input C,finished by a character"<<endl; while(cin>>temp) C.push_back(temp); cin.clear(); cin.ignore(); //求交集 vector<int> AND; for(int i=0;i<A.size();i++) for (int j=0;j<B.size();j++) if(A[i]==B[j]) AND.push_back(B[j]); cout<<"交集为"<<endl; //显示交集 for(i=0;i<AND.size();i++) cout<<AND[i]<<" "; cout<<endl; //求并集 AND.clear(); //先把A的元素依次加入 for(i=0;i<A.size();i++) AND.push_back(A[i]); //加入B中有且与A的每一个元素都不相等的元素 for(int j=0;j<B.size();j++) { int k=0; for(i=0;i<A.size();i++) if(B[j]!=A[i]) k++; if(k>=A.size()) AND.push_back(B[j]); } //显示并集 cout<<"并集为"<<endl; for(i=0;i<AND.size();i++) cout<<AND[i]<<" "; cout<<endl; return 0; }
时间: 2024-09-11 10:01:50