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

【问题描述】有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

#include <iostream>
#include<iomanip>
using namespace std;

class ARR {
private:
    int n; // 数组实际元素个数
    int a[100]; // 存放原始数组及结果数组
public:
    ARR(int x[], int size) { // 构造函数,用size初始化n,用x初始化a数组
        n = size;
        for (int i = 0; i < n; i++) {
            a[i] = x[i];
        }
    }
    void delsame(); // 删除相同元素
    void show(); // 输出结果数组
};

void ARR::delsame() {
    int j = 0; // j表示不同元素的下标
    for (int i = 1; i < n; i++) {
        if (a[i] != a[j]) { // 如果当前元素与不同元素不同,就将其放到不同元素后面
            a[++j] = a[i];
        }
    }
    n = j + 1; // 更新实际元素个数
}

void ARR::show() {
    for (int i = 0; i < n; i++) {
        cout <<setw(5)<< a[i] << " ";
        if ((i + 1) % 10 == 0) cout << endl; // 每行输出10个数
    }
    cout << endl;
}

int main() {
    int b[16] = {1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10};
    ARR v(b, 16);
    cout << "删除前:" << endl;
    v.show();
    v.delsame();
    cout << "删除后:" << endl;
    v.show();
    return 0;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linzaii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值