关于#c++#的问题:就是手动输入两个数组中的元素(输入0则停止)然后编写函数

关于#c++#的问题:就是手动输入两个数组中的元素(输入0则停止)然后编写函数

问题描述:

就是手动输入两个数组中的元素(输入0则停止)
然后编写函数,求并集,然后排序,然后输出;
求交集,然后排序,然后输出;
这几个我原本是会的,但是放在一起就不会了(嗯)
还是那句话,大佬救命
(顺带一提我第一次提问那个大佬给的回答我现在还在参悟……但是真的很有用!)
爱你们,带带小白吧……


#include<iostream>
using namespace std;
int len=0;
int Merge(int *a,int an,int *b,int bn,int *c)
{
    int i,j,n=0;
    for(i=0;i<=an-2;i++)
    {
        for(j=0;j<=bn-2;j++)
        {
            if(a[i]==b[j])
            {
                c[n]=a[i];
                n++;
            }
        }
    }
    return n;
}
int Inter(int *a, int an, int *b, int bn, int *d)
{
    int i;
    for(i=0;i<=an+bn-3;i++)
    {
        if(i<=an-2) d[i]=a[i];
        if(i>an-2) d[i]=b[i-an+1];
    }
}
void Sort(int *c,int n)
{
    int i,j,m;
    for(i=0;i<=n-1;i++)
    {
        for(j=i+1;j<=n-1;j++)
        {
            if(c[j]<c[i])
            {
                m=c[j];
                c[j]=c[i];
                c[i]=m;
            }
        }
    }
}
void Delete(int *a,int n,int *b)
{
    int i,j;
    for(i=0;i<=n-1;i++)
    {
        b[len]=a[i];
        len++;
        for(j=i+1;j<=n-1;j++)
        {
            if(a[j]!=a[i]) break;
            else i++;
        }
    }
}
void Print(int *c,int n)
{
    int i;
    for(i=0;i<=n-1;i++)
    {
        cout<<c[i]<<" ";
    }
}
int main()
{
    int a[50],b[50],c[50],an=1,bn=1,i=0,j=0,n,d[50],e[50];
    cin>>a[i];
    while(a[i]!=0)
    {
        i++;
        cin>>a[i];
        an++;
    }
    cin>>b[j];
    while(b[j]!=0)
    {
        j++;
        cin>>b[j];
        bn++;
    }
    Inter(a,an,b,bn,d);
    Sort(d,an+bn-2);
    Delete(d,an+bn-2,e);
    for(i=0;i<=len-1;i++)
    {
        cout<<e[i]<<" ";
    }
    cout<<endl;
    n=Merge(a,an,b,bn,c);
    Sort(c,n);
    Print(c,n);

}