| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:如何删除数组中相同的数字并输出?求解
取消只看楼主 加入收藏
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:2 
如何删除数组中相同的数字并输出?求解
意思是这样的,我有两个数组
int arrayA[] = {3,1,3,4,8,9,9,9};
int arrayB[] = {3,1,1,9,9,5,7,2};
然后删除它们相同的部分,所得结果应该是
int arrayA[] = {4,8};
int arrayB[] = {5,7,2};
但我写的程序输出不对,大神们看看怎么修改才是吧。
程序代码:
#include <iostream>
#include <map>
using namespace std;
int main()
{
    map<int,int> mapList;
    int arrayA[] = {3,1,3,4,8,9,9,9};
    int arrayB[] = {3,1,1,9,9,5,7,2};
    int aLen = (int)sizeof(arrayA)/sizeof(int);
    int bLen = (int)sizeof(arrayB)/sizeof(int);
    //mark object between arrayA
    for (int i = 0; i < aLen; i++)
    {
        map<int,int>::iterator it = mapList.find(arrayA[i]);
        if (it == mapList.end())
            mapList[arrayA[i]] = 0;
        else
            mapList[arrayA[i]] = 1;
    }
    //mark object between arrayB
    for (int i = 0; i < bLen; i++)
    {
        map<int,int>::iterator itor = mapList.find(arrayB[i]);
        if (itor == mapList.end())
            mapList[arrayB[i]] = 0;
        else
            mapList[arrayB[i]] = 1;
    }
    //print mapList
    for (map<int,int>::iterator it = mapList.begin(); it != mapList.end(); it++)
        cout<<it->first<<"-----"<<it->second<<endl;
    //delete mark from arrayA
    for (int i = 0; i < aLen; i++)
    {
        map<int,int>::iterator itor = mapList.find(arrayA[i]);
        if (1 == itor->second)//delete
        {
            for (int j = i; j < aLen - 1; j++)
                arrayA[j] = arrayA[j+1];
            aLen--;
        }
    }
    //delete mark from arrayB
    for (int i = 0; i < bLen; i++)
    {
        map<int,int>::iterator itor = mapList.find(arrayB[i]);
        if (1 == itor->second)//delete
        {
            for (int j = i; j < bLen - 1; j++)
                arrayB[j] = arrayB[j+1];
            bLen--;
        }
    }
    //print arrayA and arrayB
    cout<<"arrayA:"<<endl;
    for (int i = 0; i < aLen; i++)
        cout<<arrayA[i]<<" ";
    cout<<"\narrayB:"<<endl;
    for (int i = 0; i < bLen; i++)
        cout<<arrayB[i]<<" ";
    return 0;
}


 
搜索更多相关主题的帖子: 如何 
2013-10-23 16:32
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
我是这样考虑的。
第一步,先标记出两个数据给相同的数据,相同为1,不同的为0,用一个MAP存储。
第二步,根据这个MAP,删除值为1的元素。

~~~~~~我的明天我知道~~~。
2013-10-23 16:55
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:0 
恩,接受版主的意见,我再试试修改下。

~~~~~~我的明天我知道~~~。
2013-10-24 09:15
快速回复:如何删除数组中相同的数字并输出?求解
数据加载中...
 
   



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

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