-
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:442、用运算符重载的方法实现两个矩阵对象的相加,矩阵相加是指两个矩阵的每个位置上的两个元素相加 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(); } }
-
使用c++实现矩阵相加、相乘、转置、求幂
2022-04-09 09:54:46对于矩阵我们应该并不陌生吧,在大学线性代数里面每天对它相加,相乘,转置等等,那么在计算机中该怎么实现呢? 首先,先定义一个矩阵的结构体。 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/C++ 实现二维数组的矩阵相乘和矩阵相加
2021-11-18 21:31:14C++实现矩阵相乘和相加运算 这里只实现了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++ 中重载和运算符重载加号实现矩阵相加实例代码
2021-01-21 18:20:16C++ 重载+运算符重载加号 实现矩阵相加 学习C++ 基础知识,这里实现简单的实例,记录下自己学习生活,很简单,大家一起看看吧! 实例代码: #include #include using namespace std; class Complex { private: ... -
Java程序对两个矩阵相加
2021-04-24 15:48:34Java程序对两个矩阵相加我们可以使用二进制+运算符在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实现两个矩阵相加
2021-08-10 15:57:01c++使用vector实现两个矩阵相加 直接上代码 #include <vector> vector<vector<double>> matrix_add(vector<vector<double>> m, vector<vector<double>> n) { //矩阵... -
c++实现矩阵运算的加减法乘法以及测试用例
2021-07-09 16:25:04关于矩阵的应用在AI中应用还是很广泛,尤其是深度学习及其特征值提取中。 这里先简单记录上自己简单的基础矩阵算法的类,后续学习中会不断丰富这个类。 参考opencv3.4.0源码中libjasper模块中的jas_seq.c(本例中增加... -
C++稀疏矩阵的各种基本运算并实现加法乘法
2021-01-20 06:21:15代码: #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:32C++矩阵运算代码实现 -
【C++】C++矩阵的三元表的表示和基本操作,矩阵转置、相加、相乘。
2022-02-05 17:12:431.作用:此篇文章主要是矩阵和三元表的转换,可作为空间算法优化减少内存的使用。 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 <iostream>using namespace std;class Matrix{ public: Matrix(); friend Matrix operator +(Matrix &,Matrix &); void input(); void display();...Matrix:... -
C++矩阵计算代码加报告
2018-12-13 19:13:20实现矩阵计算的类,包括代码和报告,内容有矩阵乘法,矩阵加法,矩阵数乘,方阵行列式计算 -
C++_数据存储_矩阵相加(代码+注释)
2020-04-02 09:24:44题目描述 代码 /*************************************************** ...O 两个矩阵相加的结果 P 第一个存在数组a中,第二个输入后加上同位置的a数组中的数存在其中 最后一起输出 ******************... -
用C++二维数组做的两个矩阵相加 没有考虑任何条件
2011-05-10 09:04:19用C++二维数组做的两个矩阵相加 没有考虑任何条件 -
利用C++实现矩阵的相加/相称/转置/求鞍点
2020-12-25 20:03:141.矩阵相加 两个同型矩阵做加法,就是对应的元素相加。 代码如下:#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]... -
几种基本的C++矩阵运算代码
2021-03-15 18:49:31摘要:VC/C++源码,数据库应用,矩阵运算,矩阵求逆,矩阵转置 C++实现几种基本的矩阵运算,包含头文件直接调用,包含矩阵转置、求逆、相乘几个通用操作,源代码由... 内容概述:矩阵转置、矩阵求逆、矩阵相乘、矩阵相加。 -
C++(数据结构与算法):15---矩阵的实现(数组形式)
2019-11-26 22:51:41一、矩阵知识 见文章:https://blog.csdn.net/qq_41453285/article/details/103258010 二、数组实现矩阵 我们不使用二维数组来实现矩阵,而是将矩阵映射到一个一位数组中 三、代码设计 异常类定义 class ... -
OpenCV算法精解3--OpenCV中C++矩阵基本运算
2022-05-27 22:16:53代码环境:Visual studio2017和...// 矩阵运算包括:加法、减法、点乘、点除、乘法等; // 1.加法运算 #include <opencv2/core/core.hpp> #include <iostream> using namespace std; using namespace c -
c++ 矩阵加法 输入矩阵_C中的矩阵加法
2020-09-09 20:59:58c++ 矩阵加法 输入矩阵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:04c++) { 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:57C++矩阵运算,面向对象编程,构建C++矩阵运算库实现包括一维向量、二维矩阵以及三维矩阵的常见操作。 -
c++矩阵 三元表 数据结构
2021-11-23 21:45:20c++矩阵