输入集合A、B和全集C,求两集合的交集、并集、补集、差集

简介: //输入集合A、B和全集C,求两集合的交集、并集、补集、差集 /* 并集:以属于A或属于B的元素为元素的集合成为A与B的并(集) 交集: 以属于A且属于B的元素为元素的集合成为A与B的交(集) 差:以属于A而不属于B的元素为元素的集合成为A与B的差(集) 补集:A的补集C-B...
//输入集合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;
}
相关文章
|
3月前
|
人工智能 自然语言处理 安全
如何让 AI 工具更懂你,更听话?
你是否也曾被AI“气到吐血”?明明说的是A,AI却给了B?别沮丧,2025年的AI也需要“正确沟通”。本文教你五大提示技巧:动态提示、多模态输入、Few-shot示例、任务分解与安全边界,让AI从“人工智障”变身“贴心助手”。学会“说AI的语言”,释放创造力,提升效率,开启智能生活新时代!
1250 0
|
Ubuntu Shell Linux
如何在Ubuntu系统中重置root密码
如何在Ubuntu系统中重置root密码
1435 0
如何在Ubuntu系统中重置root密码
|
机器学习/深度学习 数据可视化 安全
CVPR 2023 | 由点到面:可泛化的流形对抗攻击,从个体对抗到流形对抗
CVPR 2023 | 由点到面:可泛化的流形对抗攻击,从个体对抗到流形对抗
271 0
|
存储 SQL 关系型数据库
MySql存储过程总结
原文:MySql存储过程总结       之前总是在MSSQL上写存储过程,没有在MYSQL上写过,也基本没有用过,今天需要用到MYSQL,研究了下,把项目的需要的存储过程写了一部分,写一下工作总结。这里没有给出数据库结构,不讨论SQL语句的细节,主要探讨存储过程语法,适合有基础的人。
966 0
|
Android开发
android assets 读图片
引用:http://blog.csdn.net/leilu2008/article/details/6458753 bgimg0 = getImageFromAssetsFile("Cat_Blink/cat_blink0000.
609 0
|
3天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
278 116
|
18天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~