Я пытаюсь построить функцию, которая будет умножать 2 матрицы разных размеров, используя двумерные массивы. Я получаю только ошибки в функции, которую я написал для умножения матриц, это говорит, что подсчет переменных двух вложенных циклов является источником проблемы, и он не будет компилироваться, и это не позволяет мне запускать его в режиме отладчика для какая-то странная причина.
Ошибки: «выражение должно иметь тип« точка-объект »и« индекс требует типа массива или указателя ». Не уверен, что это означает для переменных, которые вызывают ошибку, так как они используются в качестве переменных счетчика для гнездовых циклов. Все остальное работает нормально без функции умножения.
Вот весь мой код для контекста. Любой совет приветствуется! Спасибо.
#include <iostream>
using namespace std;
//Function prototypes
void matrixMultiply(int* a, int* b, int* c, int N, int M, int P);
void displayMatrix(int* a, int N, int M);
int main() {
//Constants
int const N = 2; // Rows of Data
int const M = 3; // Rows/Columns of Data
int const P = 4; // Columns of Data
//Declaration of matrices
int a[N][M] = { { 1, 2, 3 }, { 4, 5, 6 } };
int b[M][P] = { {1, 4, 7, 10}, { 2, 5, 8, 11}, {3, 6, 9, 12} };
int c[N][P];
displayMatrix(*a, N, M);
cout << endl;
displayMatrix(*b, M, P);
cout << endl;
matrixMultiply(*a, *b, *c, M, N, P);
return 0;
}
//Function to Multiply - errors occuring here
void matrixMultiply(int* a, int* b, int* c, int N, int M, int P) {
for (int i = 0; i < N; i++) {
for (int j = 0; j < P; j++) {
c[i][j] = 0; // error underlining j
for (int k = 0; k < M; k++) {
c[i][j] += a[i][k] * b[k][j]; // error underlining j and k
}
}
}
displayMatrix(c, N, P);
}
//Function to display
void displayMatrix(int* a, int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << a[i * col + j] << " ";
}
cout << endl;
}
}