您的位置:首页 > 房产 > 家装 > 【程序填空题】矩阵(运算符重载)

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

2025/1/3 11:34:06 来源:https://blog.csdn.net/zgy11026/article/details/139304056  浏览:    关键词:【程序填空题】矩阵(运算符重载)

题目描述

下面主函数和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代码:

#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, 列mCArray 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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com