实现集合的交、并、差运算
//老师问为啥那么少的人提前交,我做完了但是好多地方没有中文提示,就是纯代码,我就准备先不交再完善下 #include<iostream> #include<stdlib.h> //想用动态内存,但我发现直接定义足够大的静态数组比较简单,懒得写动态了 #include<stdio.h> using namespace std; //给集合赋值 void function_1(int A[100],int B[100],int &m,int &n){ //system("cls"); //之前写的清屏函数,就图个画面干净,想模仿一下手机APP的感觉 cout<<"***********************"<<endl; cout<<"* 1-输入集合A; *"<<endl; cout<<"* 2-输入集合B; *"<<endl; cout<<"* 3-返回; *"<<endl; cout<<"***********************"<<endl; int t; while (t!=3){ cout<<endl; cout<<"您已进入项目1!"<<endl; cout<<"请输入一个数字对项目1进行相应操作:"; cin>>t; switch (t){ case 1:{ cout<<"请键入您想输入的数字个数:"; cin>>m; for(int i=0;i<m;i++){ cout<<"第 "<<i+1<<" 个元素:"; //如果有重复数字出现,方便知道哪一个重复了 cin>>A[i]; if(i>=1){ for(int q=0;q<i;q++){ //遍历数组,查找是否有相同元素 if(A[i]==A[q]){ cout<<"您输入的第"<<i+1<<"个元素与之前有重复,请重新输入。"<<endl; i--; m=m--; //因为重新进行循环,i的值没有保留,所以我们要减短长度,即补全集合,而不是再写一个新集合 break; } } } } break; } case 2:{ cout<<"请键入您想输入的数字个数:"; cin>>n; for(int i=0;i<n;i++){ cout<<"第 "<<i+1<<" 个元素:"; cin>>B[i]; if(i>=1){ for(int q=0;q<i;q++){ if(B[i]==B[q]){ cout<<"您输入的第"<<i+1<<"个元素与之前有重复,请重新输入。"<<endl; i--; n=n--; break; } } } } break; } } } cout<<"您已完成数组赋值!"<<endl; } //求集合A交B void function_2(int A[100],int B[100],int m,int n){ cout<<"交集为:"; for(int i=0;i<m;i++){ for(int e=0;e<n;e++){ if(A[i]==B[e]){ cout<<A[i]<<" "; } } } cout<<endl; } //求集合A并B void function_3(int A[100],int B[100],int m,int n){ cout<<"A并B为:"; for(int k=0;k<m;k++) cout<<A[k]<<" "; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(B[i]==A[j]) break; if(j==m-1) {cout<<B[i]<<" "; } //若遍历到最后一位还没跳出循环,就代表与之前的元素都不重复 } } cout<<endl; } //求集合A减B void function_4(int A[100],int B[100],int m,int n){ cout<<"A减B为"; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(A[i]==B[j]){break;} if(j==n-1){cout<<A[i]<<" ";} } } cout<<endl; } int main(){ cout<<"**************************"<<endl; cout<<"* 1-输入集合A和B; *"<<endl; cout<<"* 2-求集合A交B; *"<<endl; cout<<"* 3-求集合A并B; *"<<endl; cout<<"* 4-求集合A减B; *"<<endl; cout<<"* 退出,输入一个负数 *"<<endl; cout<<"**************************"<<endl; int t; int A[100],B[100]; int m,n; while (t>0){ cout<<endl; cout<<"请输入一个数字对集合运算小程序进行相应操作:"; cin>>t; switch (t){ case 1:function_1(A,B,m,n);break; case 2:function_2(A,B,m,n);break; case 3:function_3(A,B,m,n);break; case 4:function_4(A,B,m,n);break; } //system("cls"); //每一次执行指令都输出一遍用户定义的集合,方便查看结果 if(m,n!=0){ cout<<"您定义的集合A={"; for(int i=0;i<m;i++){ cout<<A[i]; } cout<<"};"<<endl; cout<<"您定义的集合B={"; for(int i=0;i<n;i++){ cout<<B[i]; } cout<<"}。"<<endl; }else{ cout<<"您集合定义有问题,请退出程序重新执行。"<<endl; } cout<<endl; } cout<<endl; cout<<"*您已成功退出集合运算小程序*"<<endl; cout<<endl; }
代码中我用的静态数组,你们可以试一下动态数组。我嫌麻烦,不想试了。