Умножая матрицы с двумерными массивами, выражение ошибки должно иметь тип объекта point-to - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь построить функцию, которая будет умножать 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...