精华内容
下载资源
问答
  • c++矩阵相加
    千次阅读
    2021-11-22 18:49:04

    【问题描述】定义矩阵类。有两个矩阵对象 a和b,均为2行3列。求两个矩阵之和。重载运算符“+",使之能用于矩阵相加,如c=a+b.
    【输入形式】a=(下划线部分为输出的提示信息)

               1 2 3

               4 5 6

          b=

               6 5 4

               3 2 1
    【输出形式】

               a=

               b=

               7 7 7

               7 7 7
    【样例输入】

               1 2 3

               4 5 6

          

               6 5 4

               3 2 1


    【样例输出】

               a=

               b=

               7 7 7

               7 7 7

    //矩阵求和
    #include <iostream>
    #include <iomanip>
    using namespace std;
    class Array
    {
    public:
        Array();
        friend Array operator+(Array a1, Array a2);//破坏封装性 
        void input();//输入函数 
        void display();//输出函数 
    private:
        int arr[2][3];
    };
    Array::Array()//初始化矩阵为零矩阵 
    {
        int i, j;
        for (i=0; i<2; i++)
            for (j=0; j<3;j++)
                arr[i][j]=0;
    }
    Array operator+(Array a1, Array a2)//重载运算符+ 
    {
        Array a3;
        int i, j;
        for (i=0; i<2; i++)
            for (j=0; j<3; j++)
                a3.arr[i][j]=a1.arr[i][j]+a2.arr[i][j];
        return a3;
    }
    void Array::input()//输入数到矩阵中 
    {
        for (int i=0; i<2; i++)
            for (int j=0; j<3; j++)
                cin>>arr[i][j];
    }
    void Array::display()//输出矩阵 
    {
        int i, j;
        for (i=0; i<2; cout<<endl, i++)
            for (j=0; j<3; cout<<setw(1)<<arr[i][j]<<' ', j++);
    }
    int main()
    {
        Array a, b, c;
        cout<<"a="<<endl;
        a.input();
        cout<<"b="<<endl;
        b.input();
        c=a+b;
        c.display();
        return 0;
    }

    更多相关内容
  • C++ 矩阵相加(运算符重载)

    千次阅读 2020-05-31 13:52:44
    2、用运算符重载的方法实现两个矩阵对象的相加,矩阵相加是指两个矩阵的每个位置上的两个元素相加 3、用构造函数实现对象的初始化,用输出函数实现矩阵的输出。提示:在构造函数内做输入可以减少很多麻烦 4、在析构...

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

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

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

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

    4、在析构函数中释放资源

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

    //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>
    #include<cmath>
    #include <cstring>
    using namespace std;
    class matrix {
    	private:
    		int **data;
    		int m;
    		int n;
    	public:
    		matrix() {
    			m=0;
    			n=0;
    			data=NULL;
    		}
    		matrix(int m1,int n1):m(m1),n(n1) {
    			int i, j;
    			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];
    		}
    		matrix(matrix &ma) {
    			int i, j;
    			m=ma.m;
    			n=ma.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++)
    					data[i][j]=ma.data[i][j];
    		}
    		matrix& operator+(matrix &Ma) {
    			for (int i=0; i<m; i++)
    				for (int j=0; j<n; j++) {
    					Ma.data[i][j]=data[i][j]+Ma.data[i][j];
    				}
    			return Ma;
    		}
    		void disp() {
    			for(int i=0; i<m; i++) {
    				for(int j=0; j<n; j++)
    					cout<<data[i][j]<<" ";
    				cout<<endl;
    			}
    		}
    		~matrix() {
    			if(data!=NULL)
    				delete data;
    		}
    };
    int main() {
    	int t,m,n;
    	cin>>t;
    	while(t--) {
    		cin>>m>>n;
    		matrix m1(m,n);
    		matrix m2(m,n);
    		matrix sum=m1+m2;
    		sum.disp();
    	}
    }
    

    在这里插入图片描述

    展开全文
  • 对于矩阵我们应该并不陌生吧,在大学线性代数里面每天对它相加,相乘,转置等等,那么在计算机中该怎么实现呢? 首先,先定义一个矩阵的结构体。 const int MAXN = 100; //矩阵最大的行和列 // 定义一个矩阵 struct...

    引言

    对于矩阵我们应该并不陌生吧,在大学线性代数里面每天对它相加,相乘,转置等等,那么在计算机中该怎么实现呢?

    首先,先定义一个矩阵的结构体。

    const int MAXN = 100; 	//矩阵最大的行和列
    // 定义一个矩阵
    struct Matrix{
        int row,col; //行,列
        int matrix[MAXN][MAXN];
        Matrix(){}
        Matrix(int r,int c):row(r),col(c){}	// 初始化时同时给行列赋值
    };
    

    矩阵相加

    Matrix Add(Matrix x,Matrix y){
        Matrix answer = Matrix(x.row, x.col); 	//定义一个新矩阵
        for (int i = 0; i < x.row; ++i) {
            for (int j = 0; j < y.col; ++j) {
                answer.matrix[i][j] = x.matrix[i][j] + y.matrix[i][j]; //遍历矩阵中的每个元素然后赋值相加
            }
        }
        return answer;
    }
    

    矩阵相乘

    Matrix Multiply(Matrix x,Matrix y){
        // 初始化的新矩阵的行是第一个矩阵的行,列的第二个矩阵的列
        Matrix answer = Matrix(x.row, y.col);
        for (int i = 0; i < x.row; ++i) {
            for (int j = 0; j < y.col; ++j) {
                answer.matrix[i][j] = 0;
                for (int k = 0; k < x.col; ++k) {
                    answer.matrix[i][j] += x.matrix[i][k] * y.matrix[k][j];
                }
            }
        }
        return answer;
    }
    

    矩阵转置

    Matrix Transpose(Matrix x){
        Matrix answer = Matrix(x.col, x.row);//行列互换
        for (int i = 0; i < x.row; ++i) {
            for (int j = 0; j < x.col; ++j) {
                answer.matrix[i][j] = answer.matrix[j][i];
            }
        }
        return answer;
    }
    

    矩阵求幂

    Matrix QuickPower(Matrix x,int n){
        Matrix answer = Matrix(x.row, x.col);
        // 把answer初始化为单位阵,等价于求快速幂中的answer=1
        for (int i = 0; i < x.row; ++i) {
            for (int j = 0; j < x.col; ++j) {
                if (i == j) {
                    answer.matrix[i][j] = 1;
                } else {
                    answer.matrix[i][j] = 0;
                }
            }
        }
        // 类似于快速幂的算法
        while (n != 0) {
            if (n % 2 == 1) {
                answer = Multiply(answer, x);
            }
            n /= 2;
            x = Multiply(x, x);
        }
        return answer;
    
    }
    
    展开全文
  • C++实现矩阵相乘和相加运算 这里只实现了N * N矩阵相加和相乘,如果想要实现N*M 和 M*S矩阵相乘,得到N*S矩阵,只需要将乘法的i,j改成N和S的值,k对应的是M的值 #include <iostream> #define N 3 using...

    C++实现矩阵相乘和相加运算
    这里只实现了N * N矩阵的相加和相乘,如果想要实现N*M 和 M*S矩阵相乘,得到N*S矩阵,只需要将乘法的i,j改成N和S的值,k对应的是M的值

    #include <iostream>
    #define N 3
    
    using namespace std;
    void Print(int Mx[N][N]){//二维数组引用第二个参数必须要有值,否则编译不通过
        for(int i = 0; i < N; i++){
            for(int j = 0; j < N; j++){
                cout<<Mx[i][j]<<" ";
            }
            cout<<endl;
        }
    }
    void MatrixMultiply(int Mx1[N][N],int Mx2[N][N]){
        int Mx[N][N];
        for(int i = 0; i < N; i++){
            for(int j = 0; j < N; j++){
                int sum = 0;
                for(int k = 0; k < N; k++){
                    //遍历对应第i行和第j列实现相乘
                    sum+=Mx1[i][k]*Mx2[k][j];
                }
                Mx[i][j] = sum;
            }
        }
        cout<<"矩阵相乘结果:\n";
        Print(Mx);
    }
    void MatrixAdd(int Mx1[N][N],int Mx2[N][N]){
        int Mx[N][N];
        for(int i = 0; i < N; i++){
            for(int j = 0; j < N; j++){
                //矩阵相加,对应行和列相加即可
                Mx[i][j] = Mx1[i][j] + Mx2[i][j];
            }
        }
        cout<<"\n矩阵相加结果:\n";
        Print(Mx);
    }
    int main() {
        int Mx1[N][N]={{1,1,1},{1,1,1},{1,1,1}};
        int Mx2[N][N]={{1,2,3},{4,5,6},{7,8,9}};
        //Print(Mx1);
        MatrixMultiply(Mx1,Mx2);
        MatrixAdd(Mx1,Mx2);
        return 0;
    }
    

    考研打卡!

    展开全文
  • C++ 重载+运算符重载加号 实现矩阵相加  学习C++ 基础知识,这里实现简单的实例,记录下自己学习生活,很简单,大家一起看看吧! 实例代码: #include #include using namespace std; class Complex { private: ...
  • Java程序对两个矩阵相加

    千次阅读 2021-04-24 15:48:34
    Java程序对两个矩阵相加我们可以使用二进制+运算符在Java中对两个矩阵进行相加。矩阵也称为数组数组。我们可以加,减和乘矩阵。要减去两个矩阵,请使用-运算符。让我们看一个简单的示例,对两个3行3列的矩阵进行相加...
  • 稀疏矩阵相加C++

    2021-06-28 12:54:13
    c++实现稀疏矩阵相加 通过借助稀疏矩阵和三元组的相互转化实现稀疏矩阵相加求和 ```cpp #include <iostream> #include <stdlib.h> using namespace std; constexpr auto OK = 1; constexpr auto...
  • c++使用vector实现两个矩阵相加 直接上代码 #include <vector> vector<vector<double>> matrix_add(vector<vector<double>> m, vector<vector<double>> n) { //矩阵...
  • 关于矩阵的应用在AI中应用还是很广泛,尤其是深度学习及其特征值提取中。 这里先简单记录上自己简单的基础矩阵算法的类,后续学习中会不断丰富这个类。 参考opencv3.4.0源码中libjasper模块中的jas_seq.c(本例中增加...
  • 代码: #include #include #include using namespace std; #define M 4 #define N 4 #define MaxSize 100 typedef int ElemType; typedef struct { int r; int c; ElemType d;///元素值 } TupNode;...
  • C++矩阵运算代码实现

    2017-05-03 22:12:32
    C++矩阵运算代码实现
  • 1.作用:此篇文章主要是矩阵和三元表的转换,可作为空间算法优化减少内存的使用。 2.代码: #pragma once #include<iostream> using namespace std; #define M 4//稀疏矩阵行数 #define N 4//稀疏矩阵列数 ...
  • C++矩阵加法

    千次阅读 2019-07-01 21:24:27
    #include<iostream> using namespace std; int main(){ //矩阵加法 int n,m; cin >>n>>m; int a[n][m]; int b[n][m]; //输入a for(int i=0;i<n;i++){ for(i...
  • C++之重载矩阵相加

    千次阅读 2018-06-22 09:49:18
    #include &lt;iostream&gt;using namespace std;class Matrix{ public: Matrix(); friend Matrix operator +(Matrix &amp;,Matrix &amp;); void input(); void display();...Matrix:...
  • 实现矩阵计算的类,包括代码和报告,内容有矩阵乘法,矩阵加法,矩阵数乘,方阵行列式计算
  • 题目描述 代码 /*************************************************** ...O 两个矩阵相加的结果 P 第一个存在数组a中,第二个输入后加上同位置的a数组中的数存在其中 最后一起输出 ******************...
  • C++二维数组做的两个矩阵相加 没有考虑任何条件
  • 1.矩阵相加 两个同型矩阵做加法,就是对应的元素相加。 代码如下:#include<iostream>using namespace std;int main(){ int a[3][3]={{1,2,3},{6,5,4},{4,3,2}}; int b[3][3]={{4,3,2},{6,5,4},{1,2,3}}; int c[3]...
  • 摘要:VC/C++源码,数据库应用,矩阵运算,矩阵求逆,矩阵转置 C++实现几种基本的矩阵运算,包含头文件直接调用,包含矩阵转置、求逆、相乘几个通用操作,源代码由... 内容概述:矩阵转置、矩阵求逆、矩阵相乘、矩阵相加
  • 一、矩阵知识 见文章:https://blog.csdn.net/qq_41453285/article/details/103258010 二、数组实现矩阵 我们不使用二维数组来实现矩阵,而是将矩阵映射到一个一位数组中 三、代码设计 异常类定义 class ...
  • 代码环境:Visual studio2017和...// 矩阵运算包括:加法、减法、点乘、点除、乘法等; // 1.加法运算 #include <opencv2/core/core.hpp> #include <iostream> using namespace std; using namespace c
  • c++ 矩阵加法 输入矩阵Here you will find program for matrix addition in C. 在这里,您将找到C语言中矩阵加法的程序。 Two matrix can be added only when number of rows and columns of first matrix is ...
  • Java 将两个矩阵相加

    2021-03-08 16:45:04
    c++) { mArrayA[r][c] = c + r; System.out.print(mArrayA[r][c] + " "); } System.out.println(" "); } int mRowTwo = 4; int mColumnTwo = 3; int[][] mArrayB = new int[mRowTwo][mColumnTwo]; for (r = 0; r ; ...
  • C++矩阵运算模块

    2018-04-09 17:36:07
    矩阵运算模块包括矩阵相加、相减、相乘、转置、求逆、数乘、求行列式等。资源共有三个文件:Demo.cpp、Matrix.cpp和Matrix.h,其中Demo里有使用例子,可直接运行。
  • CUDA:并行计算实现矩阵相加

    千次阅读 多人点赞 2018-10-18 21:58:29
    完成矩阵相加的并行程序的实现(不用share memory实现) 要求: 实现2个矩阵(32*32)的相加,M矩阵的初始值全为2,N矩阵的初始值全为5。同时用CPU代码实现,比较两个代码的运行时间 实现2个矩阵(1024*1024)的...
  • C++矩阵运算(较全面)

    千次阅读 2020-07-12 11:42:57
    C++矩阵运算,面向对象编程,构建C++矩阵运算库实现包括一维向量、二维矩阵以及三维矩阵的常见操作。
  • c++矩阵

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,328
精华内容 3,731
关键字:

c++矩阵相加

c++ 订阅
友情链接: C语言函数速查.rar