C++实现矩阵乘法

本贴分享用C++实现矩阵乘法计算的功能,具体内容请看代码和注释,这里单独说一明一部分代码块。

1.采用vector< vector>的方式,可以实现无限度的二维动态数组,需要注意的是,对于C++来说a[m][n]的写法是合法的,而对于C语言则不行,必须采用malloc开辟空间等操作

2.对于vector< vector>来说,其元素为vector ,此处必须借助中间变量的方式,

vector V1=V[i],然后 int i =V1[i],才能获取到数字元素

3.即便C++允许a[m][n],但是一定要记得初始化,不然可能会得到想象不到的结果

4.后期为了方便对列操作,新开辟了a[m][n]格式的数组,二维vector不利于对列操作

5.对于核心计算部分的三循环,第一层和第二层分别用来控制行标和列标,第三层才是真正的乘法计算,1号矩阵的行元素对应与2号矩阵的列元素相乘,再累加,得到的结果即为当前位置上矩阵的值

#include 
#include 
using namespace std;
 
int main(int argc, char** argv) {
	
	int m1=0,m2=0,n1=0,n2=0;   //定义两个矩阵的行数和列数
	int num1=0,num2=0;         //两个矩阵的元素总数
	cout<<"请输入矩阵1的行数与列数:"<>m1>>n1;
	cout<<"请输入矩阵2的行数与列数:"<>m2>>n2;
	
	if(m2!=n1)
	{
		cout<<"当前两个矩阵不能进行乘法运算!"<  >V1;
	vector< vector  >V2;
	cout<<"请读入矩阵1:"< T1;
		for(int j=0;j<=n1-1;j++) //内层循环,控制列数向左移动 
		{
			int temp=0;
			cin>>temp;
			T1.push_back(temp);
		}
		V1.push_back(T1);
	} 
	cout<<"请读入矩阵2:"< T2;
		for(int j=0;j<=n2-1;j++)
		{
			int temp=0;
			cin>>temp;
			T2.push_back(temp);
		}
		V2.push_back(T2);
	}
	
	cout<<"输入的矩阵1如下:"< C1=V1[i];
		for(int j=0;j<=n1-1;j++) //内层循环控制列数向左移动 
		{
			cout< C2=V2[i];
		for(int j=0;j<=n2-1;j++) //内层循环控制列数向左移动 
		{
			cout< C1=V1[i];
		for(int j=0;j<=n1-1;j++) //内层循环,控制列数向左移动 
		{
			A1[i][j]=C1[j];
		}
		cout< C2=V2[i];
		for(int j=0;j<=n2-1;j++)  
		{
			A2[i][j]=C2[j];
		}
		cout<

对于矩阵:1 2 3;4 5 6和1 2;3 4 ;5 6相乘的结果如下图,与手算和MATLAB计算保持一致

C++实现矩阵乘法_第1张图片

 

你可能感兴趣的:(C++语法基础及经典案例,c++,矩阵,线性代数)