首页 > 代码库 > 训练1:删除序列中相同的数

训练1:删除序列中相同的数

题目要求:

  有16个数{1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10},已经按由大到小顺序排好,存储在数组a中

  试建立一个类ARR,完成删除数组中相同的数,经过删除后,数组中的内容为{1,2,3,4,5,6,7,8,9,10}.

#include<iostream>#include<iomanip>using namespace std;class ARR{        public:                void ARR_delete();                ARR();//构造函数的声明不能用void                void ARR_show();        private:                int a[16];};ARR::ARR()//不能是void ARR::ARR(){        int i;        for(i = 0;i<16;i++)        {                cin>> a[i];        }}void ARR::ARR_delete(){        int i,j,temp;        temp = a[0];        for(j = 0;j<15;j++)        {                temp = a[j];                for(i = j+1 ;i<16;i++)                {                        if(temp == a[i])                        {                                a[i]= 0;//这种消除法是比较损耗内存的                        }                }        }}void ARR::ARR_show(){        int i,j;        for(i= 0;i<16;i++)        {                if(a[i] !=0)                        cout <<setw(6)<< a[i];        }}int main(){        ARR ARR_test;//定义一个对象;        ARR_test.ARR_delete();        ARR_test.ARR_show();        return 0;}                                                                                                                                     

 

 

总结编写的时候出现的bug

15行出现了返回值什么:错误是因为声明构造函数是void ARR();其实只是ARR就可一了

40行那个也是一样,void ARR::ARR(),其实只需要ARR::ARR();

 

函数改进的方法:

int main(){        /*ARR ARR_test;//定义一个对象;        ARR_test.ARR_delete();        ARR_test.ARR_show();*/        ARR *pt = new ARR;        pt->ARR_delete();        pt->ARR_show();        delete pt;                return 0;}