C/C++教程

C++实现集合运算

本文主要是介绍C++实现集合运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实现集合的交、并、差运算

//老师问为啥那么少的人提前交,我做完了但是好多地方没有中文提示,就是纯代码,我就准备先不交再完善下
#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;
}

代码中我用的静态数组,你们可以试一下动态数组。我嫌麻烦,不想试了。

这篇关于C++实现集合运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!