📄 矩阵相乘.cpp
字号:
#include <iostream>
#include <cstdlib>
using namespace std;
template<typename T>
void matrixm(T *a,T *b,int rows,int cols,int colsb)
{
int sum,l,i,j;
for(l=0;l<rows;l++)
{
for(i=0;i<colsb;i++)
{
sum=0;
for(j=0;j<cols;j++)
sum+=a[l][j]*b[j][i];
cout.width(5);
cout<<sum;
}
cout<<endl;
}
}
template<typename T>
void matrixMtp(T *a,T *b,int rows,int cols,int colsb)
{
int ct = 0, cm = 0, cw = 0;
// 对所有的i和j计算w ( i , j )
for (int i = 1; i <= rows; i++) {
// 计算出结果的第 i 行
for (int j = 1; j <= colsb; j++) {
// 计算w ( i , j ) 的第一项
T sum = a[ct]*b[cm];
// 累加其余项
for (int k = 2; k <= cols; k++) {
ct++; // 指向* t h i s第i行的下一个元素
cm += colsb; // 指向m 的第j 列的下一个项
sum += a[ct] * b[cm];
}
cout.width(5);
cout<<sum; // 保存w ( i , j )
// 重新调整至行首和下一列
ct -=( cols - 1);
cm = j;
}
(cout<<endl).width(5);
// 重新调整至下一行的行首和第一列
ct += cols;
cm = 0;
}
}
int main()
{
int a[3][3]={1,2,1,2,1,2,3,2,3};
int b[9]={1,2,1,2,1,2,3,2,3};
matrixMtp(b,b,3,3,3);
matrixm(a,a,3,3,3);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -