输入集合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;
}
时间: 2024-09-11 10:01:50

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

数据结构实践——“求两集合交集”的一个错解分析

本文点评一位学生对基于线性表存储集合,然后对集合进行求并运算的错解,供学习者参考. [项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中. 提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试

数据结构实践——顺序表:两集合的交集

[项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB, List &LC )函数实现该算法,求一个新的集合C=A∪B,即将两个集合的并集放在线性表LC中. 提示: (1)除了实现unnionList函数外,还需要在main函数中设计代码,调用unionList进行测试和演示: (2)可以充分利用前面建好的算法库[点击-],在程序头部直接加 #incl

c++-输入三角形的三条边,求三角形的面积,用C++实现

问题描述 输入三角形的三条边,求三角形的面积,用C++实现 输入三角形的三条边,求三角形的面积,用C++实现 输入三角形的三条边,求三角形的面积,用C++实现 解决方案 #include using namespace std; int main() { double a,b,c,s; cout<<"请输入三角形的三边长度:"; cin>>a>>b>>c; if( a+b<=c || fabs(a-b)>=c) printf(

acm icpc-一个c语言的简单acm问题,求两个二进制数有多少位不同,输入的是十进制数.

问题描述 一个c语言的简单acm问题,求两个二进制数有多少位不同,输入的是十进制数. include int main() { int n,p=0,k,m,t; int a[50]; int b[50]; int c[50]; int d[50]; int i=0,j,u,z,w,q,e,s; int r; int count=0; scanf("%d",&r); while(r--){ scanf("%d%d",&n,&m); while(

java-Java 从键盘输入一个只有加减法的等式,求结果

问题描述 Java 从键盘输入一个只有加减法的等式,求结果 从键盘输入一个等式,例如1+1-1,输出最后的答案1,输入的等式不确定项数 解决方案 /* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; /* Name of the class has to be "Main" only if the class is pu

c++-编写程序,求两个整数集合的并集。。。

问题描述 编写程序,求两个整数集合的并集... 编写程序,求两个整数集合的并集...能不能把下面这个修改一下??如果可以,再写一个完整的程序也可以 解决方案 这是按照你的思路写的(假设a b两个数组内没有重复的数字) #include <iostream> #include <stdlib.h> using namespace std; void arrunion(int a[], int b[], int r[], int an, int bn, int * n) { *n =

输入字符串的格式不正确。求问这个问题怎么解决 。。。

问题描述 输入字符串的格式不正确.求问这个问题怎么解决 ... 解决方案 labMoney.Text无法转换为一个整数,看看它是否为空,有没有小数点和别的字符. 解决方案二: 用正则判断下输入的值是否为数字,不是数字就退出 if (!System.Text.RegularExpressions.Regex.IsMatch(labMoney.Text.Trim(), @"^d+(.d+)?$")) { Response.Write("labMoney输入错误!");

集合查找-如何求解满足以下场景的集合元素

问题描述 如何求解满足以下场景的集合元素 有以下对应的集合,求存在于所有集合(不要求同时存在于所有集合中)最小元素集合 X1场景对应集合(A.B.C) X2场景对应集合(B.C) X3场景对应集合(D) X4场景对应集合(A.F) X5场景对应集合(B.E) 比如上述场景结果集合为B.D.F B存在于X1,X2,X5场景,D存在于X3场景,F存在于X4场景. 不知各位有什么好的算法解决.

visual studio-VS2015求两数和没法输入数?

问题描述 VS2015求两数和没法输入数? 输入任意键直接退出 没法输入数? 解决方案 cin>>V1>>V2 应该分开 解决方案二: 你单步调试一下,看有没有到最后,或者在main函数退出前加上"system("pause"):",程序就不会退出了. 还有你两个数是怎么输入的,中间是空格么?还是输入一个,回车一下,再输入下一个?