标题:c++删除一维数组中重复出现的元素,然后按从大到小的顺序输出
只看楼主
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2018-10-18
结帖率:25%
已结贴  问题点数:8 回复次数:6 
c++删除一维数组中重复出现的元素,然后按从大到小的顺序输出
#include<iostream.h>
void main()
{
    int i,n;
    int x,y,q;
    int *pb;
    int *a=new int[n];
    int *pa=a;
    int e=0;
    int j,temp;
    cout<<"数组中的元素个数为:"<<endl;
    cin>>n;
    cout<<"请输入数组a[n]中的元素:"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>*(pa+i);
    }
    for(i=0;i<n;i++)
    {
        cout<<*(pa+i);
        cout<<" ";
    }
for(i=0;i<n+1-e;i++)
{
    for(j=1;j<n+1-i-e;j++)
    {
        if(*(pa+i)=*(pa+i+j))
        {
            temp=*(pa+i+j);
            *(pa+i+j)=*(pa+n-e);
            *(pa+n-e)=temp;
            e++;
        }
    }
}
for(x=0;x<n+1-e;x++)
{
    *(pb+x)=*(pa+x);
}
for(x=0;x<(n+1-e);x++)
   for(y=0;y<(n-e-x);y++)
   {
          if(*(pb+y)<*(pb+y+1))
          {q=*(pb+y);
           *(pb+y)=*(pb+y+1);
           *(pb+y+1)=q;
          }
   }
   for(x=0;x<n+e-1;x++)
       cout<<*(pb+x)<<endl;
}
程序没有出错,然后数据的输入输出也是对的,但是最后的删除之后的输不出来

[此贴子已经被作者于2018-11-5 20:55编辑过]

搜索更多相关主题的帖子: 元素 int pb cout for 
2018-11-05 20:54
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:3 
输出真的对么为啥我测试不成功啊?
2018-11-06 08:47
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2018-10-18
得分:0 
回复 2楼 豆豆的滴
就是删除之后的输出不对,原始数据的输入输出是对的。
2018-11-06 10:17
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:3 
第一次看到 #include<iostream.h> 就关了
第二次看到 int *a=new int[n]; 中 n 还没赋值就关了
2018-11-06 10:46
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2018-10-18
得分:0 
回复 4楼 rjsp
不至于吧,我这边刚才还试了的
2018-11-06 10:55
龙岩花界
Rank: 2
等 级:论坛游民
帖 子:41
专家分:27
注 册:2018-10-18
得分:0 
回复 4楼 rjsp
#include<iostream.h>
void main()
{
    int i,n;
    int x,y,q;
    int *pb;
    int *a=new int[n];
    int *pa=a;
    int e=0;
    int j,temp;
    cout<<"数组中的元素个数为:"<<endl;
    cin>>n;
    cout<<"请输入数组a[n]中的元素:"<<endl;
    for(i=0;i<n;i++)
    {
        cin>>*(pa+i);
    }
    for(i=0;i<n;i++)
    {
        cout<<*(pa+i);
        cout<<" ";
    }
}
这就是对的
2018-11-06 10:57
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:3 
emmmmm,首先这里是C板块,虽然某种意义上C++不涉及类和输入输出的话和C没区别,但终究有差异,所以在这发不太适合
因为对C++基本没了解,对于你的思路和程序结构也不好说什么,提下个人看着感觉不对劲的东西吧
for(i=0;i<n+1-e;i++)
 {
     for(j=1;j<n+1-i-e;j++)
     {
         if(*(pa+i)=*(pa+i+j))此处,if判断语句确定是对比判断而不是变成bool判断?此次似乎是你用作重复对比吧
         {
             temp=*(pa+i+j);
             *(pa+i+j)=*(pa+n-e);
             *(pa+n-e)=temp;
             e++;
         }
     }
 }

int *pb;
for(x=0;x<n+1-e;x++)
 {
     *(pb+x)=*(pa+x);
 }emmm,虽然是C++,不过,该声明应该也仅仅声明了一个int类型指针,而非数组吧,直接用作输出数组缓存可行?

最后,文章缩进没处理好,当然可能是复制代码到网页这边导致的格式丢失,不过希望注意下,还有,既然是提问,最好对内容进行详细注释,这样即便跨语言,很多人也能给予有意义的回答,而且注释本身就是一次高效率排错,尤其是对于小的程序,基本上很多问题你自己注释一遍就找出来了
2018-11-06 11:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491019-1-1.html




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

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