【问题描述】有16个数:{1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10},已按由小到大的顺序排好,存于数组a中,试建立一个类ARR,完成将其中相同的数删得只剩一个。经删除后,a数组中的内容 为{1,2,3,4,5,6,7,8,9,10},具体要求如下:
(1) 私有数据成员
int n: 数组实际元素个数。
int a[100]:存放原始数组及结果数组。
(2) 公有成员函数
ARR(int x[ ], int size):构造函数,用size初始化n,用x初始化a数组。
void delsame():完成数组a中相同元素的删除工作。
void show(): 将结果数组以每行10个数的形式输出到屏幕上。
(3) 在主程序中定义数组int b[16],初值如上。定义一个类ARR的对象v,用b及数组元素的个数初始化该对象,然后按上述要求完成对该类的测试。
【输入形式】无
【输出形式】输出数组对象删除重复元素前和删除重复元素后的数据。
【样例输入】无
【样例输出】
删除前:
1 2 2 3 4 4 5 6 6 7 8 8 8 9 10 10
删除后:
1 2 3 4 5 6 7 8 9 10二、代码实现
#includeusing namespace std; #include class ARR { private: int n; int a[100]; public: ARR(int x[], int size) { n=size; for(int i=0;i a[i]=x[i]; } } void delsame() { for(int i=0;i for(int j=i+1;j if(a[i]==a[j]) { for(int k=j;k a[k]=a[k+1]; } --n; --j; } } } } void show() { for(int i=0;i cout< int b[]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10}; //先定义数组, 用此数组初始化类的对象中的数组成员 int n=sizeof(b)/sizeof(int); //计算b数组的元素长度 ARR v(b,n); //定义类的对象并用数组b和数据n初始化对象的成员 cout<<"删除前:"; v.show (); //输出对象的数组成员中的数据(还未做删除操作, 输出的是初始化后的数据) cout<



