【程序填空题】矩阵(运算符重载)

题目描述

下面主函数和Array类完成矩阵的输入、输出。请补齐Array类中需要的成员函数。

提示:根据已给代码分析CArray需要重载哪些运算符?

输入

测试次数

每组测试数据格式如下:

正整数n、m,分表表示矩阵的行、列

n*m行整数数据

输出

每组测试数据输出矩阵数据两次,具体输出格式见样例。

//

输入样例:

2

3 3

1 2 3

4 5 6

7 8 9

2 4

10 20 30 40

50 60 70 80

输出样例:

MatrixA:

1 2 3

4 5 6

7 8 9

MatrixB:

1 2 3

4 5 6

7 8 9

MatrixA:

10 20 30 40

50 60 70 80

MatrixB:

10 20 30 40

50 60 70 80

代码板块:

#include <iostream>

using namespace std;

class CArray //矩阵类

{

int n, m; //n行,m列

int **data; //存储矩阵数据

public:

CArray():data(nullptr){}

CArray(int nValue, int mValue);

~CArray();

//补齐CArray的其它成员函数及实现

/********** Write your code here! **********/

/*******************************************/

//CArray构造函数

CArray::CArray(int nValue, int mValue) : n(nValue), m(mValue)

{

// 分配n行m列空间

data = new int *[n];

for (int i = 0; i < n; i++)

{

data[i] = new int[m];

}

}

//CArray析构函数

CArray::~CArray()

{

// 释放空间

for (int i = 0; i < n; i++)

{

delete[] data[i];

}

delete[] data;

}

//主函数

int main()

{

int t;

int n, m;

int i, j;

cin >> t;

while (t--)

{

cin >> n >> m; // 输入矩阵行n, 列m

CArray matrixA(n, m); // 定义matrixA对象

for (i = 0; i < n; ++i) // 输入n行m列数据

for (j = 0; j < m; j++)

cin >> matrixA[i][j];

cout << "MatrixA:" << endl;

for (i = 0; i < n; ++i) // 输出matrixA中的数据

{

for (j = 0; j < m; j++)

{

cout << matrixA(i,j) << " ";

}

cout << endl;

}

cout << "MatrixB:" << endl;

CArray matrixB; // 定义matrixB对象

matrixB = matrixA; // 赋值

for (i = 0; i < n; ++i) // 输出matrixB对象

{

for (j = 0; j < m; j++)

{

cout << matrixB[i][j] << " ";

}

cout << endl;

}

}

return 0;

}

AC代码:

cpp 复制代码
#include <iostream>
using namespace std;
class CArray // 矩阵类
{
    int n, m;   // n行,m列
    int **data; // 存储矩阵数据
public:
    CArray() : data(nullptr) {}
    CArray(int nValue, int mValue);
    ~CArray();
    // 补齐CArray的其它成员函数及实现
    CArray &operator=(const CArray &rhs)
    {
        if (this == &rhs)
            return *this;
        if (data)
            delete[] data;
        n = rhs.n;
        m = rhs.m;
        data = new int *[n];
        for (int i = 0; i < n; i++)
        {
            data[i] = new int[m];
        }
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                {
                    data[i][j] = rhs.data[i][j];
                }
            }
        return *this;
    }

    int *operator[](int index)
    {
        return data[index];
    }

    int &operator()(int i, int j) const
    {
        return data[i][j];
    }
};

// CArray构造函数
CArray::CArray(int nValue, int mValue) : n(nValue), m(mValue)
{
    // 分配n行m列空间
    data = new int *[n];
    for (int i = 0; i < n; i++)
    {
        data[i] = new int[m];
    }
}
// CArray析构函数
CArray::~CArray()
{
    // 释放空间
    for (int i = 0; i < n; i++)
    {
        delete[] data[i];
    }
    delete[] data;
}
// 主函数
int main()
{
    int t;
    int n, m;
    int i, j;
    cin >> t;
    while (t--)
    {
        cin >> n >> m;          // 输入矩阵行n, 列m
        CArray matrixA(n, m);   // 定义matrixA对象
        for (i = 0; i < n; ++i) // 输入n行m列数据
            for (j = 0; j < m; j++)
                cin >> matrixA[i][j];
        cout << "MatrixA:" << endl;
        for (i = 0; i < n; ++i) // 输出matrixA中的数据
        {
            for (j = 0; j < m; j++)
            {
                cout << matrixA(i, j) << " ";
            }
            cout << endl;
        }
        cout << "MatrixB:" << endl;
        CArray matrixB;         // 定义matrixB对象
        matrixB = matrixA;      // 赋值
        for (i = 0; i < n; ++i) // 输出matrixB对象
        {
            for (j = 0; j < m; j++)
            {
                cout << matrixB[i][j] << " ";
            }
            cout << endl;
        }
    }
    return 0;
}
相关推荐
CoovallyAIHub7 分钟前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP1 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo1 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo1 小时前
300:最长递增子序列
算法
CoovallyAIHub6 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub7 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农1 天前
【React用到的一些算法】游标和栈
算法·react.js