• 第六周项目2-我的数组类


    下面的程序,因为存在指针类型的数据成员,需要能完成深复制的构造函数。请补充完整构造函数和析构函数(其他不必动)。其中,构造函数要完成下面三个任务:
    (1)为各成员函数赋值,按照深复制原则,其中arrayAddr应该是为保存数据新分配的连续空间的首地址;
    (2)MyArray(int *a, int n)中,要将a指向的数组中的数值,逐个地复制到新分配的arrayAddr指向的空间中;

    (3)getMax( )函数采取的策略是直接返回max(所以,计算max的工作,由构造函数完成)

    /*
    * Copyright (c) 2015,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:Demo.cpp
    * 完成时间:2015年04月16日
    * 版本号:v1.0
    */
    #include<iostream>
    using namespace std;
    class MyArray
    {
    private:
        int *arrayAddr; //保存一个有len个整型元素的数组的首地址
        int len;       //记录动态数组的长度
        int max;       //动态数组中的最大值(并非动态数组中必须要的数据成员)
    public:
        MyArray(int *a, int n);
        ~MyArray();
        int getValue(int i);   //获得数组中下标为i的元素的值
        int getLen();          //返回数组长度
        int getMax( );         //返回数组中的最大值
    };
    MyArray::MyArray(int *a, int n)
    {
        len=n;
        arrayAddr=new int[n];
        max=a[0];
        for(int i=0; i<n; i++)
        {
            arrayAddr[i]=a[i];
            if (max<a[i])
            {
                max=a[i];
            }
        }
    
    }
    MyArray::~MyArray()
    {
        delete [] arrayAddr;
    }
    int MyArray::getValue(int i)    //获得数组中下标为i的元素的值
    {
        return arrayAddr[i];
    }
    int MyArray::getLen()    //返回数组长度
    {
        return len;
    }
    int MyArray::getMax( )    //返回数组中的最大值
    {
        return max;
    }
    int main()
    {
        int b[10]= {75, 99, 90, 93, 38, 15, 5, 7, 52, 4};
        MyArray r1(b,10);
        cout<<"最大值:"<<r1.getMax()<<endl;
        int c[15] = {18,68,10,52,3,19,12,100,56,96,95,97,1,4,93};
        MyArray r2(c,15);
        int i,s=0;
        for(i=0; i<r2.getLen(); i++)
            s+=r2.getValue(i);
        cout<<"所有元素的和为:"<<s<<endl;
        return 0;
    }
    
    运行结果:


    @ Mayuko

  • 相关阅读:
    第十三周总结
    第一阶段意见评论
    第十二周总结
    关于transform的3D变形函数
    12.9学习内容
    12.8学习的内容
    这是自己的第一篇博客
    食物链
    poj1988Cute Stacking
    银河英雄传说
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567510.html
Copyright © 2020-2023  润新知