建立一个数组类ARR删除数组中的重复元素.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4. class ARR {
  5. private:
  6. int n; // 数组实际元素个数
  7. int a[100]; // 存放原始数组及结果数组
  8. public:
  9. // 构造函数,用size初始化n,用x初始化a数组
  10. ARR(int x[], int size) : n(size) {
  11. for (int i = 0; i < size; ++i) {
  12. a[i] = x[i];
  13. }
  14. }
  15. // 完成数组a中相同元素的删除工作
  16. void delsame() {
  17. if (n == 0) return;
  18. int j = 0; // 新数组的索引
  19. for (int i = 1; i < n; ++i) {
  20. if (a[i] != a[j]) {
  21. a[++j] = a[i];
  22. }
  23. }
  24. n = j + 1; // 更新数组的实际元素个数
  25. }
  26. // 将结果数组以每行10个数的形式输出到屏幕上
  27. void show() const {
  28. for (int i = 0; i < n; ++i) {
  29. cout << setw(5) << a[i];
  30. if ((i + 1) % 10 == 0) {
  31. cout << endl;
  32. }
  33. }
  34. if (n % 10 != 0) {
  35. cout << endl;
  36. }
  37. }
  38. };
  39. int main() {
  40. int b[] = {1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8, 9, 10, 10}; // 定义数组
  41. int n = sizeof(b) / sizeof(int); // 计算b数组的元素长度
  42. ARR v(b, n); // 定义类的对象并用数组b和数据n初始化对象的成员
  43. cout << "删除前:";
  44. v.show(); // 输出对象的数组成员中的数据(还未做删除操作, 输出的是初始化后的数据)
  45. cout << endl;
  46. v.delsame(); // 对对象进行操作, 即将对象的数组成员中的相同的元素删除
  47. cout << "删除后:";
  48. v.show(); // 删除操作后输出对象的数组成员中的数据
  49. cout << endl;
  50. return 0;
  51. }