fff2924 2022-06-12 14:30 采纳率: 100%
浏览 91
已结题

c++语言程序题 需完整答案

这是完整的题目截图,六小时截止,希望得到各位的帮助,谢谢大家

img

img

img

  • 写回答

1条回答 默认 最新

  • qfl_sdu 2022-06-12 17:08
    关注

    你的题目有错误,拷贝构造函数的参数和析构函数名都写错了。
    dynamicArray2D类代码如下:

    
    class dynamicArray2D :public dynamicArray {
    public:
        dynamicArray2D();
    
        dynamicArray2D(int* const, int col, int vol); //col为行数, vol为列数
    
        dynamicArray2D(const dynamicArray2D&);
    
        ~dynamicArray2D();
    
        void showArray() const; // 以行列形式输出一个二维数组
    
        friend ostream& operator << (ostream& os, dynamicArray2D& obj);
    
    private:
        int** mArray;
        int mRol, mCol;
        static const int INC;
    };
    
    const int dynamicArray2D::INC = 8;
    
    dynamicArray2D::dynamicArray2D()
    {
        mArray = new int* [INC];
        for (int i = 0; i < INC; i++)
            mArray[i] = new int[INC];
        mRol = INC;
        mCol = INC;
    }
    //col为行数, vol为列数
    dynamicArray2D::dynamicArray2D(int* const p, int col, int vol) 
    {
        int i, j, k=0;
        mArray = new int*[col];
        for (i = 0; i < col; i++)
            mArray[i] = new int[vol];
        mRol = col;
        mCol = vol; 
        for (i = 0; i < col; i++)
        {
            for (j = 0; j < vol; j++)
            {
                mArray[i][j] = p[k];
                k++;
            }
        }
    }
    
    dynamicArray2D::dynamicArray2D(const dynamicArray2D& p)
    {
        this->mRol = p.mRol;
        this->mCol = p.mCol;
    
        this->mArray = new int* [mRol];
        for (int i = 0; i < mRol; i++)
        {
            mArray[i] = new int[mCol];
            for (int j = 0; j < mCol; j++)
            {
                mArray[i][j] = p.mArray[i][j];
            }
        }
    }
    dynamicArray2D::~dynamicArray2D()
    {
        for (int i = 0; i < mRol; i++)
        {
            delete[] mArray[i];
            mArray[i] = 0;
        }
        delete[] mArray;
        mArray = 0;
    
    }
    
    void dynamicArray2D::showArray() const
    {
        int i, j;
        for (i = 0; i < mRol; i++)
        {
            for (j = 0; j < mCol; j++)
                cout << setw(6) << mArray[i][j] ;
            cout << endl;
        }
    }
    
    ostream& operator << (ostream& os, dynamicArray2D& obj)
    {
        int i, j;
        for (i = 0; i < obj.mRol; i++)
        {
            for (j = 0; j < obj.mCol; j++)
                os << setw(6) << obj.mArray[i][j];
            os << endl;
        }
        return os;
    }
    
    

    完整代码:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    class myArray {
    public:
        virtual void showArray() const = 0;
    };
    
    class dynamicArray : public myArray {
    public:
        dynamicArray();
        dynamicArray(int* const, int);
        dynamicArray(const dynamicArray&);
        ~dynamicArray();
        void showArray() const;
        int operator [](int);
    private:
        int* array;
        int length;
        friend ostream& operator << (ostream& os, const dynamicArray&);
        static const int INC;
    };
    const int dynamicArray::INC = 8;
    
    dynamicArray::dynamicArray()
    {
        array = new int[INC];
        length = INC;
    }
    
    dynamicArray::dynamicArray(int* const p, int len)
    {
        length = INC;
        while (len > this->length)
            length = length + INC;
    
        array = new int[length]();
        for (int i = 0; i < len; i++)
            array[i] = p[i];
    }
    
    dynamicArray::dynamicArray(const dynamicArray& source)
    {
        this->length = source.length;
        this->array = new int[length];
        for (int i = 0; i < length; i++)
            array[i] = source.array[i];
    }
    
    dynamicArray :: ~dynamicArray()
    {
        delete array;
    }
    
    
    int dynamicArray :: operator [](int i)
    {
        return array[i];
    }
    
    void dynamicArray::showArray() const
    {
        for (int i = 0; i < length; i++) {
            cout << setw(6) << array[i];
            if ((i + 1) % 10 == 0)
                cout << endl;
        };
    }
    
    ostream& operator << (ostream& os, dynamicArray& obj) 
    {
        obj.showArray();
        return os << endl;
    }
    
    
    class dynamicArray2D :public dynamicArray {
    public:
        dynamicArray2D();
    
        dynamicArray2D(int* const, int col, int vol); //col为行数, vol为列数
    
        dynamicArray2D(const dynamicArray2D&);
    
        ~dynamicArray2D();
    
        void showArray() const; // 以行列形式输出一个二维数组
    
        friend ostream& operator << (ostream& os, dynamicArray2D& obj);
    
    private:
        int** mArray;
        int mRol, mCol;
        static const int INC;
    };
    
    const int dynamicArray2D::INC = 8;
    
    dynamicArray2D::dynamicArray2D()
    {
        mArray = new int* [INC];
        for (int i = 0; i < INC; i++)
            mArray[i] = new int[INC];
        mRol = INC;
        mCol = INC;
    }
    //col为行数, vol为列数
    dynamicArray2D::dynamicArray2D(int* const p, int col, int vol) 
    {
        int i, j, k=0;
        mArray = new int*[col];
        for (i = 0; i < col; i++)
            mArray[i] = new int[vol];
        mRol = col;
        mCol = vol; 
        for (i = 0; i < col; i++)
        {
            for (j = 0; j < vol; j++)
            {
                mArray[i][j] = p[k];
                k++;
            }
        }
    }
    
    dynamicArray2D::dynamicArray2D(const dynamicArray2D& p)
    {
        this->mRol = p.mRol;
        this->mCol = p.mCol;
    
        this->mArray = new int* [mRol];
        for (int i = 0; i < mRol; i++)
        {
            mArray[i] = new int[mCol];
            for (int j = 0; j < mCol; j++)
            {
                mArray[i][j] = p.mArray[i][j];
            }
        }
    }
    dynamicArray2D::~dynamicArray2D()
    {
        for (int i = 0; i < mRol; i++)
        {
            delete[] mArray[i];
            mArray[i] = 0;
        }
        delete[] mArray;
        mArray = 0;
    
    }
    
    void dynamicArray2D::showArray() const
    {
        int i, j;
        for (i = 0; i < mRol; i++)
        {
            for (j = 0; j < mCol; j++)
                cout << setw(6) << mArray[i][j] ;
            cout << endl;
        }
    }
    
    ostream& operator << (ostream& os, dynamicArray2D& obj)
    {
        int i, j;
        for (i = 0; i < obj.mRol; i++)
        {
            for (j = 0; j < obj.mCol; j++)
                os << setw(6) << obj.mArray[i][j];
            os << endl;
        }
        return os;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月12日
  • 已采纳回答 6月12日
  • 创建了问题 6月12日