Я не могу понять, почему этот фрагмент кода, который должен выполнять умножение матриц, работает неправильно.
Ввод: 2x2 матрицы с элементами 1,2,3,4 в обеих матрицах
Ожидаемый результат: 7 10 15 22 * 1009 *
Вывод, полученный этим кодом: 15 22 12 16
int a[10][10], b[10][10], c[10][10], i, j, k, r1, c1, r2, c2;
int (*pa)[10][10] = &a, (*pb)[10][10] = &b, (*pc)[10][10] = &c;
for ( i = 0; i < r1; i++) {
for(j = 0; j < c2; j++) {
*pc[i][j] = 0;
for(k = 0; k < c1; k++) {
*pc[i][j] += *pa[i][k] * *pb[k][j];
}
}
}
Я попытался отладить, используя операторы печати, подобные этому, и вот результаты:
Когда даноМатрицы 2x2, у которых 1,2,3,4 в качестве элементов, это ошибки, которые были получены:
at 00 of a is 3
at 00 of b is 1
Elements you're multiplying: 3 1
Но ожидаемый результат таков:
at 00 of a is 1
at 00 of b is 1
(То же самое происходитдля остальных элементов) Остальной код, который не вставлен здесь, не содержит ошибок.Тщательно проверил, используя операторы печати.