编写3个子函数分别实现两个整数集合的并、交、差运算。要求将两个集合相应运算的结果以递增次序存于数组A中。主函数测试。
3条回答 默认 最新
关注
#include<iostream> #include<cstring> #include<stdlib.h> using namespace std; int inter(int *a,int *b,int m,int n)//交集 {undefined int len=m>n?m:n; int *c=(int*)malloc(sizeof(int)*len); int d=0; for(int i=0;i<m;i++) {undefined for(int j=0;j<n;j++) {undefined if(a[i]==b[j]) {undefined c[d++]=a[i]; } } } cout<<"输出a与b的交集:"<<endl; for(int i=0;i<d;i++) {undefined cout<<c[i]<<" "; } cout<<endl; } int union_a(int *a,int *b,int m,int n)//并集 {undefined int k=m,es=1; int *c=(int *)malloc(sizeof(int)*(m+n)); for(int i=0;i<m;i++) {undefined c[i]=a[i]; } for(int i=0;i<n;i++) { es=1; for(int j=0;j<m;j++) {undefined if(b[i]==c[j]) {undefined es=0; } } if(es) {undefined c[k]=b[i]; k++; } } cout<<"输出集合a,b的并集:"<<endl; for(int i=0;i<k;i++) {undefined cout<<c[i]<<" "; } cout<<endl; } int diff(int *a,int *b,int m,int n)//差集 {undefined int k=0; int *c=(int *)malloc(sizeof(int )*m); for(int i=0;i<m;i++) {undefined c[i]=a[i]; } for(int i=0;i<n;i++) {undefined for(int j=0;j<m;j++) {undefined if(b[i]==c[j]) {undefined for(k=j;k<m;k++) {undefined c[k]=c[k+1]; m--; break; } } } } cout<<"输出集合a,b的差集:"<<endl; for(int i=0;i<k;i++) {undefined cout<<c[i]<<" "; } cout<<endl; } int main() {undefined int *a,*b; int m,n;//集合a,b的个数 int c; cout<<"输入集合a的长度:"<<endl; cin>>m; cout<<"输入集合b的长度:"<<endl; cin>>n; a=(int*)malloc(sizeof(int)*m); b=(int*)malloc(sizeof(int)*n); cout<<"输入集合a:"<<endl; for(int i=0;i<m;i++) {undefined cin>>a[i]; } cout<<"输入集合b:"<<endl; for(int i=0;i<n;i++) {undefined cin>>b[i]; } inter(a,b,m,n); union_a(a,b,m,n); diff(a,b,m,n); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报