编程实现集合的交、并、差运算(数组)

//第一个问题:编程实现集合的交、并、差运算

离散数学,课堂加分练习题
 

#include<iostream>
#include<stdio.h>
#include<time.h> 
using namespace std;
void grbq(char s[])
{
    time_t rawtime; 
    struct tm * timeinfo; 
    time (&rawtime); 
    timeinfo = localtime ( &rawtime );
    printf("\n%s  ",s);
 printf("%s", asctime (timeinfo) ); 
}
int main()
{
    int a[100],b[100],bing[200],jiao[100],cha1[100],cha2[100],dcha[100],i=0,j=0;
    int n=0,m=0;
    cout<<"请输入集合A的数量:"; 
    cin>>n;
    cout<<"请输入集合B的数量:"; 
    cin>>m;
    cout<<"\n请输入集合A的元素:"; 
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }//输入集合a 
    cout<<"请输入集合B的元素:";
    for(j=0;j<m;j++)
    {
        cin>>b[j];
    }//输入集合b 
    
//计算集合a和b的交集 
    int k=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(a[i]==b[j])
            jiao[k++]=a[i];
        }
    }
    cout<<"\n集合A和集合B的交集是:{";
    for(i=0;i<k;i++)
    {
        cout<<jiao[i]<<' ';
    }
    printf("}");//输出集合的交集
    printf("\n");    
//计算集合A和B的并集
    int c=0,flog=0;
    for(i=0;i<n;i++)
    {
        bing[i]=a[i];//复制 
    }
    for(i=0;i<m;i++)//并集 
    {
        flog=0;
        for(j=0;j<n;j++)//循环 
        {
            if(b[i]!=bing[j])
            {
                flog++;
            }
            if(flog==n)
            {
                bing[n+(c++)]=b[i];
            }
        }
    }
    c=n+c;
    cout<<"\n集合A和集合B的并集是:{";
    for(i=0;i<c;i++) 
    {
        cout<<bing[i]<<' ';
    }
    printf("}");//输出集合的并集
    printf("\n");
    
//求集合的差集
    int d=0;
    flog=0;
    for(i=0;i<n;i++)
    {
        for(j=0;j<k;j++)
        {
            if(a[i]!=jiao[j])
            {
                flog++;
            }
            if(flog==k)
            {
                cha1[d++]=a[i];
            }
            
        }
        flog=0;
        
     }//求A-B
   printf("\nA-B集合为:{"); 
   for(i=0;i<d;i++)
    {
        cout<<cha1[i]<<' ';       
    }
    printf("}");//输出A-B 
    int f=0;
    flog=0;
    for(i=0;i<m;i++)
    {
        for(j=0;j<k;j++)
        {
            if(b[i]!=jiao[j])
              flog++;
            if(flog==k)
              {
                cha2[f++]=b[i];
              }
         } 
         flog=0;
    }
    printf("\n\nB-A集合为:{"); 
    for(i=0;i<f;i++)
    {
        cout<<cha2[i]<<' ';       
    }
    printf("}");//输出B-A    
//对称差
    int h=0;
    for(i=0;i<d;i++)
    {
        dcha[h++]=cha1[i];
    }
    for(j=0;j<f;j++)
    {
        dcha[h+j]=cha2[j];
    }
    h=h+j;
    printf("\n\n集合A和B的对称差为:{");
    for(i=0;i<h;i++)
    {
        cout<<dcha[i]<<' ';
    } 
    printf("}");
     
    grbq("\n\n\txxx大数据B202");
    
    return 0;
}