【发布时间】:2014-11-01 03:39:12
【问题描述】:
这是我正在开发的程序。任务是乘以 2 个矩阵。矩阵 A 中的列数与矩阵 B 中的行数相同。下面是对两个矩阵包含的内容以及预期结果的评论。计算结果就是我的程序所做的。
void matrixMul(Matrix A, Matrix B, int ARows, int ACols, int BCols, Matrix C){
int k;
int l;
int j;
for(j=0; j < ARows; j++) {
for (l=0; l < BCols; l++) {
for (k=0; k < ACols; k++) {
C[j][l] += A[j][k] * B[k][l];
}/*for*/
}/*for*/
}/*for*/
}/*matrixMul*/
/*This is what the output should be....
==> Computing 0.0 1.0 2.0 0.0 1.0 2.0
1.0 2.0 3.0 * 3.0 4.0 5.0
2.0 3.0 4.0 6.0 7.0 8.0
==> Expected 15.0 18.0 21.0
24.0 30.0 36.0
33.0 42.0 51.0
==> Computed 15.0 20.0 25.0
28.0 36.0 44.0
41.0 52.0 63.0 */
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。
Matrix是什么类型?你能显示打印出你的两个矩阵的代码吗?在开始添加之前,您是否将矩阵 C 设置为零?请查看如何创建 MCVE (How to create a Minimal, Complete, and Verifiable Example?) 或 SSCCE (Short, Self-Contained, Correct Example) — 相同基本思想的两个名称和链接。 -
在中间循环中,您是否尝试在最里面的循环开始之前添加
c[l][k] = 0。那会发生什么?此外,您似乎在矩阵内玩整数以外的东西,也请详细说明这一点。 -
@nIcEcOw:我认为在第三个嵌套循环之前添加
C[j][l] = 0;是对的。
标签: c arrays matrix multiplication