编程实现集合的交、并、差运算(数组)
//第一个问题:编程实现集合的交、并、差运算
离散数学,课堂加分练习题
#include<iostream> #include<stdio.h> #include<time.h> using namespace std; void grbq(char s[]) { time_t rawtime; struct tm * timeinfo; time (&rawtime); timeinfo = localtime ( &rawtime ); printf("\n%s ",s); printf("%s", asctime (timeinfo) ); } int main() { int a[100],b[100],bing[200],jiao[100],cha1[100],cha2[100],dcha[100],i=0,j=0; int n=0,m=0; cout<<"请输入集合A的数量:"; cin>>n; cout<<"请输入集合B的数量:"; cin>>m; cout<<"\n请输入集合A的元素:"; for(i=0;i<n;i++) { cin>>a[i]; }//输入集合a cout<<"请输入集合B的元素:"; for(j=0;j<m;j++) { cin>>b[j]; }//输入集合b //计算集合a和b的交集 int k=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(a[i]==b[j]) jiao[k++]=a[i]; } } cout<<"\n集合A和集合B的交集是:{"; for(i=0;i<k;i++) { cout<<jiao[i]<<' '; } printf("}");//输出集合的交集 printf("\n"); //计算集合A和B的并集 int c=0,flog=0; for(i=0;i<n;i++) { bing[i]=a[i];//复制 } for(i=0;i<m;i++)//并集 { flog=0; for(j=0;j<n;j++)//循环 { if(b[i]!=bing[j]) { flog++; } if(flog==n) { bing[n+(c++)]=b[i]; } } } c=n+c; cout<<"\n集合A和集合B的并集是:{"; for(i=0;i<c;i++) { cout<<bing[i]<<' '; } printf("}");//输出集合的并集 printf("\n"); //求集合的差集 int d=0; flog=0; for(i=0;i<n;i++) { for(j=0;j<k;j++) { if(a[i]!=jiao[j]) { flog++; } if(flog==k) { cha1[d++]=a[i]; } } flog=0; }//求A-B printf("\nA-B集合为:{"); for(i=0;i<d;i++) { cout<<cha1[i]<<' '; } printf("}");//输出A-B int f=0; flog=0; for(i=0;i<m;i++) { for(j=0;j<k;j++) { if(b[i]!=jiao[j]) flog++; if(flog==k) { cha2[f++]=b[i]; } } flog=0; } printf("\n\nB-A集合为:{"); for(i=0;i<f;i++) { cout<<cha2[i]<<' '; } printf("}");//输出B-A //对称差 int h=0; for(i=0;i<d;i++) { dcha[h++]=cha1[i]; } for(j=0;j<f;j++) { dcha[h+j]=cha2[j]; } h=h+j; printf("\n\n集合A和B的对称差为:{"); for(i=0;i<h;i++) { cout<<dcha[i]<<' '; } printf("}"); grbq("\n\n\txxx大数据B202"); return 0; }