类实现数组去重及排序

来源:互联网 发布:域名注册购买 编辑:程序博客网 时间:2024/05/21 06:38

这道题目使我充分的意识到调试在代码找错过程中的重要性

/*试定义一个类 NUM,实现将一维数组中各整数元素去年去掉相同数字后再对数组从小到大排序。将一个整数去掉相同数字是指:如果一个整数中有相同的数字,则保留从左数起,第一次看到的那个数字,而将其它的数字去掉。例如:数字 12324151 中有三个 1,两个 2,则去掉相同的数字后变为 12345。具体要求如下:(1)私有数据成员    int a[5];存放需要处理的数据。(2)公有成员函数    NUM(int t[],int n);构造函数,用 t 初始化 a,n 为 t 的元素个数。    void sort(int t[],int n);将数组 t 的元素从小到大排序。    int convert(int n);去除 n 中相同的数字并返回新得到的数。    int fun();将数组 a 的各元素去除相同的数字后从小到大排列。要求调用函数 convert()和 sort().    void print();输出数组 a 的所有元素。(3) 在主函数中对该类进行测试。输入/输出示例输入 5 个整数:1213    65666  22313   12341  34435*/#include<iostream>using namespace std;class NUM{private:    int a[5];    int ge_shu;public:    NUM(int t[], int n);    void sort(int t[], int n);    int convert(int n);    int fun();    void print();};NUM::NUM(int t[], int n){    for (int i = 0; i < n; i++)    {        a[i] = t[i];    }    ge_shu = n;}void NUM::sort(int t[] , int n){    for (int i = 0; i < n; i++)    {        for (int j = i+1; j < n; j++)        {            if (a[i] > a[j])            {                int temp;                temp = t[i];                t[i] = t[j];                t[j] = temp;            }        }    }}int NUM::convert(int n){    //把n分位放进数组    int temp[5], count = 4;    while (n)    {        temp[count] = n % 10;        n /= 10;        count--;    }    if (count == 0)        temp[count] = -1;    //对数组进行查重、删除、合并成整数返回    for (int i = 0; i < 5; i++)    {        for (int j = i + 1; j < 5; j++)        {            if (temp[i] == temp[j])            {                temp[j] = -1;  //不可以赋值为0,-1可以避免0对程序的干扰            }        }    }    int return_final = 0;    for (int i = 0; i < 5; i++)    {        if (temp[i] != -1)        {            return_final *= 10;            return_final += temp[i];        }    }    return return_final;}int NUM::fun(){    //把a数组合并成数字、执行converet函数进行删除重复    int need_num = 0;    for (int i = 0; i < ge_shu; i++)    {        need_num *= 10;        need_num += a[i];    }    need_num = convert(need_num);    //把convert返回的处理完的数字变成数组并赋值给a数组    int count = 0;    while (need_num)    {        a[count] = need_num % 10;        count++;        need_num /= 10;    }    sort(a, count);    //返回最终剩余数字个数    return count;}void NUM::print(){    for (int i = 0; i < fun(); i++)    {        cout << a[i] << '\t';    }    cout << endl;}int main(){    int a[] = { 1,3,2,4,1 };    NUM num(a, 5);    num.print();    system("pause");    return 0;}
原创粉丝点击