实现集合的交、并、差运算
//老师问为啥那么少的人提前交,我做完了但是好多地方没有中文提示,就是纯代码,我就准备先不交再完善下
#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;
}
代码中我用的静态数组,你们可以试一下动态数组。我嫌麻烦,不想试了。