| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 367 人关注过本帖
标题:并集结果不是我想的那样
只看楼主 加入收藏
iambeliveble
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2009-9-2
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
并集结果不是我想的那样
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]<<"  ";
     }
高手们,函数是输出两个集合并集后的结果,可结果总是不正确,检查后我的代码没什么问题啊.望高手指点
搜索更多相关主题的帖子: 结果 
2009-09-03 22:13
忒好了
Rank: 2
等 级:论坛游民
帖 子:7
专家分:79
注 册:2009-9-3
收藏
得分:20 
数据操作不一致
/*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;
            }
    }
数据操作不一致,在对n操作的同时,应该对列表数据操作,将相同的数据从列表中删除,即列表数据前移
2009-09-04 00:13
快速回复:并集结果不是我想的那样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036046 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved