[英]Matrix Multiplication using C++
(r1,c1) 和 (r2,c2) 是矩阵 a[][] 和矩阵 b[][] 的行数和列数 矩阵 c[][] 是 a[][] 和 b[ 的矩阵乘法][] 用户输入a[][] 和b[][] 的行数和列数,并输入两者的元素。
对于相同的 a[][] 和 b[][],程序的预期输出是:c[2][2]={{7,14},{17,34}}
但是,我似乎无法在逻辑中找到错误。
以下部分代码是进行矩阵乘法的逻辑
for (i = 0; i < r1; i++) {
for (j = 0; j < c2; j++) {
c[i][j] = 0;
for (k = 0; k < c1; k++) {
c[i][j] += a[i][j] * b[k][j];
}
}
}
for (i = 0; i < r1; i++) {
for (j = 0; j < c2; j++) {
printf("%d ", c[i][j]);
}
printf("\n");
}
一些战略重命名给出
for(int row = 0; row < r1; row++)
{
for(int column = 0; column < c2; column++)
{
c[row][column] = 0;
for(int element = 0; element < c1 ; element++)
{
c[row][column] += a[row][column] * b[element][column];
}
}
}
在那里您可以更清楚地看到乘法是错误的 - 您在每一步都乘以a
中的相同元素。
它应该是
c[row][column] += a[row][element] * b[element][column];
我想这可以帮助您解决问题:
c[i][j]+=a[i][k]*b[k][j];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.