• C++数组类的自实现,使其可以保存学生成绩,并进行降序排列


    类的封装

    #ifndef ARRAY_H
    #define ARRAY_H
    
    class DoubArray
    {
    private:
        int m_length;
        double* m_pointer;
    
    public:
        DoubArray(int len);
        DoubArray(const DoubArray& obj);
        int length();
        bool get(int index, double& value);
        bool set(int index, double value);
        void sort(const DoubArray& obj);
        void show(const DoubArray& obj);
        ~DoubArray();
    };
    
    #endif // ARRAY_H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    类的实现

    #include "Array.h"
    #include 
    using namespace std;
    
    //构造函数,用于创建数组并初始化
    DoubArray::DoubArray(int len)
    {
        m_pointer = new double[len];
    
        for(int i = 0; i < len; i++)
        {
            m_pointer[i] = 0;
        }
    
        m_length = len;
    }
    
    //拷贝构造函数,用于深拷贝
    DoubArray::DoubArray(const DoubArray& obj)
    {
        m_length = obj.m_length;
    
        m_pointer = new double[obj.m_length];
    
        for(int i = 0; i < obj.m_length; i++)
        {
            m_pointer[i] = obj.m_pointer[i];
        }
    }
    
    //数组排序
    void DoubArray::sort(const DoubArray& obj)
    {
        int len = obj.m_length;
    
        for(int i = 0; i < len; i++)
        {
            for(int j = 0; j < len - i; j++)
            {
                if( obj.m_pointer[j] < obj.m_pointer[j+1] )
                {
                    double temp = obj.m_pointer[j];
                    obj.m_pointer[j] = obj.m_pointer[j+1];
                    obj.m_pointer[j+1] = temp;
                }
            }
        }
    }
    
    //获取数组长度
    int DoubArray::length()
    {
        return m_length;
    }
    
    //获取数组成员
    bool DoubArray::get(int index, double& value)
    {
        bool ret = (0 <= index) && (index < length());
        if( ret )
        {
            value = m_pointer[index];
        }
    
        return ret;
    }
    
    //设置数组成员
    bool DoubArray::set(int index, double value)
    {
        bool ret = (0 <= index) && (index < length());
        if( ret )
        {
            m_pointer[index] = value;
        }
    
        return ret;
    }
    
    //遍历数组
    void DoubArray::show(const DoubArray& obj)
    {
        int len = obj.m_length;
        for(int i = 0; i  < len ; i++)
        {
            cout << obj.m_pointer[i] << endl;
        }
    }
    
    //析构函数,销毁数组
    DoubArray::~DoubArray()
    {
        delete[]m_pointer;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95

    主函数调用

    #include 
    #include "Array.h"
    using namespace std;
    
    int main()
    {
        double score = 0;
        int num = 0;
        cout << "请输入学生人数:";
        cin >> num;
        DoubArray stu_a(num);
    
        for(int i = 0; i < num; i++)
        {
    
            cout << "请输入第" << i+1 << "个学生的成绩:";
            cin >> score;
            stu_a.set(i, score);
        }
    
        cout << "学生成绩降序排列如下:";
        stu_a.sort(stu_a);
        stu_a.show(stu_a);
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    程序效果

    在这里插入图片描述

  • 相关阅读:
    CommandInvokationFailure: Gradle build failed.
    MySQL中的不等于
    变电站数字孪生3D可视化运维系统,实现电力行业智慧化数字化信息化转型升级
    TCR历史研究夏校申请详解
    Hadoop1_hadoop概览
    微信小程序开发之flex布局及轮播图组件与后台Mock.js交互
    vue如何使用socket与服务端进行通信
    Java 基础面试300题 (231-260)
    Hive面试题系列第四题-Pv累加趋势图问题
    vue导入数据添加在列表数据中
  • 原文地址:https://blog.csdn.net/m0_72847002/article/details/132744707