c++问题,删除数据中重复的数据

给定一系列整型数据,删除其中重复的数据使各种数据仅保留一份。输入数据有多行,每行有若干个整数,每行总字符数不超过65536字节。为简化编程,这里的整数都在整型范围中。输入... 给定一系列整型数据,删除其中重复的数据使各种数据仅保留一份。
输入数据有多行,每行有若干个整数,每行总字符数不超过65536字节。为简化编程,这里的整数都在整型范围中。
输入数据有多行,每行有若干个整数,每行总字符数不超过65536字节。为简化编程,这里的整数都在整型范围中。
对于每一种情形,输出处理结果,换行。注意:按输入顺序输出序列,使得后面出现的相同数字被删除。
下面是我的代码
#include <iostream>
using namespace std;
int main(){
int a[50],i,j,k,c=1,r=0;
while(cin>>a[0]){
for(i=1;i>0;i++){
cin>>a[i];
if(a[i]=='\n')break;
c++;
}
a[c]='\0';
for(i=0;i<c;i++)
for(j=i+1;j<c;j++)
if(a[i]==a[j]){
for(k=j;k<c;k++)a[j]=a[j+1];
r++;}
for(i=0;i<c-r-1;i++)cout<<a[i]<<" ";
cout<<a[c-r-1]<<endl;
}
return 0;
}

我的想法是找出相同的,把后面的那个删掉,后面所有数据向前一位,但测试时什么输出都没有,望大神解答,就用我这种思想
展开
 我来答
kaixingui2012
推荐于2017-09-27 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6396万
展开全部
你的程序错误很大,把整型数组当作字符串数组来对待了!
在你的基础上进行了优化,自己研究一下吧
#include <iostream>
using namespace std;
#define NMAX 500
int main(){
int a[NMAX],i,j,k,c;
while(cin>>a[0]){
for(i=1;i<NMAX;i++)
{
cin>>a[i];
if ( cin.get()=='\n' ) break;
}
c=i+1;

for(i=0;i<c;i++)
for(j=i+1;j<c;j++)
if(a[i]==a[j])
{
for(k=j;k<c-1;k++)a[k]=a[k+1];
c--; //数组长度减小1
j--; //要再从原j位置开始检查,不然有两个相邻的数与a[i]相同会漏掉
}
for(i=0;i<c-1;i++)cout<<a[i]<<" ";
cout<<a[c-1]<<endl;
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式