我注意到如果矩阵相乘时不是正方形,我的函数会跳过最后一行。我还没有看到错误,所以请帮忙。
void multiplication(int (&a1)[4][4], int (&b)[4][4], int (&c)[4][4], int n, int l){
for (int i=0; i<n; i++){
for (int j=0; j<l; j++){
for(int k=0; k<n; k++){
int save = a1[i][k]*b[k][j];
c[i][j] += save;
save = 0;
}
}
}
}
矩阵乘法的条件(一个的行数 = 第二个的列数)在另一个函数中检查。
您不需要新的循环,您需要该函数了解矩阵的所有大小,现在您正在传递
n
,l
这仅足以将方阵乘以 type4 на 4
。将矩阵
3 на 4
与 c相乘时4 на 2
,请注意您有 3 个数字3, 4, 2
,并且您的函数目前只能了解其中的两个。这是您的功能的正确示例:
为了更好地理解,我重命名了变量并在注释中签名了它们代表的含义。
现在要乘以矩阵
3 на 4
,4 на 2
您需要像这样调用函数: