关于#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);
}