📜  通过将矩阵传递给函数的C++程序将两个矩阵相乘(1)

📅  最后修改于: 2023-12-03 15:42:02.192000             🧑  作者: Mango

通过将矩阵传递给函数的C++程序将两个矩阵相乘

在C++中,我们可以通过将矩阵传递给函数的方式来实现两个矩阵的相乘操作。下面我们将介绍如何实现这个操作。

函数定义

我们可以定义一个函数来实现矩阵相乘的操作,如下所示:

void multiplyMatrices(int mat1[][N], int mat2[][P], int res[][P]) {
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < P; ++j) {
            res[i][j] = 0;
            for (int k = 0; k < M; ++k) {
                res[i][j] += mat1[i][k] * mat2[k][j];
            }
        }
    }
}

在上面的代码中,我们定义了一个名为“multiplyMatrices”的函数。这个函数接受三个参数:

  • mat1:第一个矩阵
  • mat2:第二个矩阵
  • res:结果矩阵

这个函数的主要作用是将mat1和mat2矩阵相乘的结果存储到res矩阵中。

调用函数

我们可以通过以下代码来调用上面定义的函数:

int mat1[N][M] = { {1, 2, 3}, {4, 5, 6} };
int mat2[M][P] = { {7, 8}, {9, 10}, {11, 12} };
int res[N][P];

multiplyMatrices(mat1, mat2, res);

在上面的代码中,我们定义了三个矩阵:mat1、mat2和res。我们将mat1和mat2传递给“multiplyMatrices”函数,并将结果存储在res中。

使用结果矩阵

一旦我们调用了multiplyMatrices函数并获得了结果矩阵res,我们可以使用以下代码来打印结果矩阵中的元素:

for (int i = 0; i < N; ++i) {
    for (int j = 0; j < P; ++j) {
        std::cout << res[i][j] << " ";
    }
    std::cout << std::endl;
}

在上面的代码中,我们遍历了结果矩阵res,并使用cout打印了矩阵中的每个元素。

完整代码

下面是一个完整的示例代码,它通过将矩阵传递给函数的方式来实现两个矩阵的相乘操作:

#include <iostream>

const int N = 2;
const int M = 3;
const int P = 2;

void multiplyMatrices(int mat1[][M], int mat2[][P], int res[][P]) {
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < P; ++j) {
            res[i][j] = 0;
            for (int k = 0; k < M; ++k) {
                res[i][j] += mat1[i][k] * mat2[k][j];
            }
        }
    }
}

int main() {
    int mat1[N][M] = { {1, 2, 3}, {4, 5, 6} };
    int mat2[M][P] = { {7, 8}, {9, 10}, {11, 12} };
    int res[N][P];

    multiplyMatrices(mat1, mat2, res);

    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < P; ++j) {
            std::cout << res[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}
总结

通过将矩阵传递给函数的方式来实现两个矩阵的相乘操作是一种非常方便和有效的方式。我们只需要定义一个函数来实现这个操作,然后将两个矩阵作为参数传递给这个函数即可。