注册 登录
编程论坛 C++教室

删除数组中重复数据

tszhao 发布于 2008-03-15 17:05, 1568 次点击
我的程序是这样的,但是最后运行的时候有错误,该怎么改啊?
#include <iostream>
using namespace std;
int main()
{
    int a[50];
    void del(int *p);
    int i;
    for(i=0;i!=50;++i)
    {
        a[i]=rand()%40+1;
        cout<<a[i]<<" ";
    }
    cout<<endl;
    del(a);
    for(i=0;;++i)
    {
        cout<<a[i]<<" ";
        if(a[i]='\0')
        {
            cout<<endl;
            return 0;
        }
    }
}
void del(int *p)
{
    int a[50];
    for(int i=0;i!=50;++i)
        a[i]=*(p+i);
    int i,j;
    for(i=0;a[i]!='\0';i++)
    {
        int ix(i+1),iy(i+1);
        while(*(p+iy)!='\0')
        {    
            if(*(p+iy)==a[i])
                iy++;
            a[ix++]=*(p+iy++);
        }
        for(i=0;i!=sizeof(a)/sizeof(int);++i)
            *(p+i)=a[i];
    }
}
1 回复
#2
lonmaor2008-03-15 19:16
1.随机数生成通常使用时间做种子。包含time.h头文件
srand((unsigned)time( NULL ));
否则每次使用rand()生成的随机数都是相同的。
2.'\0'字符被隐性转换后赋值给一个int[]的元素是可以的,可是int[]不是char[],'\0'的出现没有优势可言。用数字0作为被删除元素的替代品反倒适当一些。
3.del()函数内部的a[]没必要定义。

一家之言
1