12-B. 矩阵相加(运算符重载)

本文介绍了一个使用C++实现的矩阵类,该类通过运算符重载来完成矩阵的加法运算。文章提供了完整的代码示例,包括矩阵的初始化、矩阵相加以及输出结果等功能。读者将了解到如何在类中利用指针实现动态二维数组,并掌握基本的运算符重载技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验12-运算符重载-
题目描述
已知一个矩阵包含行数m、列数n、数值data三个属性,包含初始化、输出、相加等操作,要求

1、在类定义中,矩阵的data属性是一个整数指针型指针。只有创建对象时,根据外来输入的行数和列数,才把指针变成一个二维数组

2、用运算符重载的方法实现两个矩阵对象的相加,矩阵相加是指两个矩阵的每个位置上的两个元素相加

3、用构造函数实现对象的初始化,用输出函数实现矩阵的输出。提示:在构造函数内做输入可以减少很多麻烦

整数指针变成二位数组的参考代码

//m和n是行数和列数
int m, n;
int *data;
int i, j;
cin>>m>>n;
data=new int
[m]; //先创建m行
for(i=0;i<m;i++)
{ data[i]=new int[n]; } //再创建n列

for (i=0; i<m; i++)
for (j=0; j<n; j++)
cin>>data[i][j];

输入
第一行输入t表示t个实例

第二行输入第一个示例的矩阵的行数和列数,两个矩阵的行数和列数都是相同的

第三行起,输入第一个矩阵的具体数据

依次类推,输入第二个矩阵的具体数据

依次类推,输入下一个示例的数据

输出
输出每两个矩阵相加的结果,每个示例结果之间用一个回车分隔开

输入样例
2
2 3
1 2 3
4 5 6
-1 -2 -3
6 5 4
2 2
11 22
33 44
55 66
77 88

输出样例
0 0 0
10 10 10
66 88
110 132

#include<iostream>
using namespace std;

class martrix
{
    int m,n;
    int **data;
    public:
        martrix(int mm,int nn)
        {
            int i,j;
            m=mm;n=nn;
            data=new int *[m];
            for(i=0;i<m;i++)
                data[i]=new int[n];
            
            for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                    cin>>data[i][j];
        }
        martrix operator+(martrix &m1)
        {
            martrix m3=m1;
            int i,j;
            for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                {
                    m3.data[i][j]=m3.data[i][j]+data[i][j];
                }
                
            return m3;
        }
        void print()
        {
            int i,j;
            for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                {
                    if(j==n-1)
                        cout<<data[i][j]<<endl;
                    else
                        cout<<data[i][j]<<" ";
                }
        }
};

int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,m;
        cin>>m>>n;
        martrix m1(m,n);
        martrix m2(m,n);
        martrix m3=m1+m2;
        m3.print();
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值