并集结果不是我想的那样
template<class T>void jihe<T>::plus(T a[],int i)
{
cout<<"请输入另一个集合的个数g"<<endl;
int m,f,g;f=0;
cin>>g;cout<<endl;
int b[100];
for( m=1;m<=g;m++)
{
int u;
cout<<"请输入数据元素"<<endl;
cin>>u;cout<<endl;
b[m-1]=u;
}
int d[500];
for(m=1;m<=i;m++)
{
d[m-1]=a[m-1];
}
for(int j=i;j<=(i+g);j++)
{
d[j]=b[j-i];
}
cout<<endl;
for(j=1;j<=(i+g);j++)//输出所有数据元素
{
cout<<d[j-1]<<" ";
}
cout<<endl;
int t[100];int n=0;
cout<<"两个集合并后的结果 "<<endl;
/*for(m=1;m<=(i+g-n);m++)
{
for(int j=1;j<=(i+g-n);j++)
if(d[m-1]==d[j])
{
int u;
u=d[j];
t[n]=u;n=n+1;
}
}
cout<<"交集元素"<<endl;
for(m=1;m<=n;m++)
{
cout<<t[m-1]<<" ";
}*/
for(m=1;m<=(i+g-n);m++)
{
for(int j=1;j<=(i+g-n);j++)
if(d[m-1]==d[j])
{
//cout<<"两个集合交后的结果是 ";
//cout<<d[j]<<endl;
int u;
u=d[m-1];
t[n]=u;
n=n+1;
int v;v=j;
while(v<=(i+g-n))
{
int r;
r=d[v];
d[v]=d[v+1];//覆盖相等的元素,这是关键
v++;
}
}
else
{
int u;
u=d[m-1];
t[n]=u;
n=n+1;
}
}
for(m=1;m<=n;m++)
{
cout<<t[m-1]<<" ";
}
高手们,函数是输出两个集合并集后的结果,可结果总是不正确,检查后我的代码没什么问题啊.望高手指点