zoukankan      html  css  js  c++  java
  • 输入集合A、B和全集C,求两集合的交集、并集、补集、差集

    //输入集合A、B和全集C,求两集合的交集、并集、补集、差集
    
    /*
    并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 
    交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 
    差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 
    补集:A的补集C-B
    */
    /*
    例如:A={1,2,3} B={2,3,4} C={1,2,3,4,5}
    AB并集为={1,2,3,4}
    交集为={2,3}
    A补集={4,5}
    AB差集为={1}
    
    */
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main()
    {
            vector<int> A,B,C;
            int temp;
            
            cout<<"input A,finished by a character"<<endl;
            while(cin>>temp)
                    A.push_back(temp);
            cin.clear() ;//清除错误状态
            cin.ignore() ;//跳过无效数据
            
            
            cout<<"input B,finished by a character"<<endl;
            while(cin>>temp)
                    B.push_back(temp);
            cin.clear() ;
            cin.ignore() ;
            
            
            cout<<"input C,finished by a character"<<endl;
            while(cin>>temp)
                    C.push_back(temp);
            cin.clear();
            cin.ignore();
            
            
            
            //求交集
            vector<int> AND;
            
            
            for(int i=0;i<A.size();i++)
                    for (int j=0;j<B.size();j++)
                            if(A[i]==B[j])
                                    AND.push_back(B[j]); 
            cout<<"交集为"<<endl;
            //显示交集
            for(i=0;i<AND.size();i++)
                    cout<<AND[i]<<" ";
            cout<<endl;
                            
            //求并集
            AND.clear();
    
            //先把A的元素依次加入
            for(i=0;i<A.size();i++)
                    AND.push_back(A[i]);
            
            //加入B中有且与A的每一个元素都不相等的元素
            
            for(int j=0;j<B.size();j++)
            {
                    int k=0;
                    for(i=0;i<A.size();i++)
                            if(B[j]!=A[i])
                                    k++;
                    if(k>=A.size())
                            AND.push_back(B[j]);
            }
    
            //显示并集                
            cout<<"并集为"<<endl;
            for(i=0;i<AND.size();i++)
                    cout<<AND[i]<<" ";
            cout<<endl;
                                    
            return 0;
    }
    
  • 相关阅读:
    c# 并行运算二
    c# 并行运算
    Task+http请求
    Task多线程
    SSO系统认证
    web系统权限设计
    AutoMapper的使用
    中间件
    express-middleware
    中间件概念
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/1896494.html
Copyright © 2011-2022 走看看