首页 > 解决方案 > 出现此错误时我该怎么办:“int”类型的参数与 C++ 中“int(*)[101]”类型的参数不兼容

问题描述

#include <iostream>
using namespace std;

void readMatrixA(int lenght)
{
    int matrixA[101][101];
    for (int i = 0; i < lenght; i++)
        for (int j = 0; j < lenght; j++)
            cin >> matrixA[i][j];
}

void readMatrixB(int lenght)
{
    int matrixB[101][101];
    for (int i = 0; i < lenght; i++)
        for (int j = 0; j < lenght; j++)
            cin >> matrixB[i][j];
}

void matrixMultiplication(int matrixA[101][101], int matrixB[101][101],int lenght)
{
    int i, j, matrixC[101][101];
    if (lenght <= 2)
    {
        for (i = 0; i < lenght; i++)
            for (j = 0; j < lenght; j++)
            {
                matrixC[i][j] = 0;
                for (int k = 0; k < lenght; k++)
                    matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
            }
    }
    else
    {
        matrixC[1][1]=matrixMultiplication(matrixA[1][1], matrixB[1][1], lenght / 2) + matrixMultiplication(matrixA[1][2], matrixB[2][1], lenght / 2);
        matrixC[1][2]=matrixMultiplication(matrixA[1][1], matrixB[1][2], lenght / 2) + matrixMultiplication(matrixA[1][2], matrixB[2][2], lenght / 2);
        matrixC[2][1]=matrixMultiplication(matrixA[2][1], matrixB[1][1], lenght / 2) + matrixMultiplication(matrixA[2][2], matrixB[2][1], lenght / 2);
        matrixC[2][2]=matrixMultiplication(matrixA[2][1], matrixB[1][2], lenght / 2) + matrixMultiplication(matrixA[2][2], matrixB[2][2], lenght / 2);
    }

    for (i = 0; i < lenght; i++)
    {
        for (j = 0; j < lenght; j++)
        {
            cout << matrixC[i][j] << " ";
        }
        cout << endl;
    }
}

int main()
{
    int lenght;
    cout << "Introduceti dimensiunea matricelor: "; cin >> lenght;
    int matrixA[101][101], matrixB[101][101], matrixC[101][101];
    cout << "Introduceti matricea A: ";
    readMatrixA(lenght);
    cout << "Introduceti matricea B: ";
    readMatrixB(lenght);
    matrixMultiplication(matrixA, matrixB, lenght);
    return 0;
}

这是在 Visual Studio 中编写的 Strassen 矩阵乘法代码。该代码对方阵使用分而治之的技术。

在“matrixMultiplication”函数中,这 4 行调用在哪里,我有这个错误““int”类型的参数与“int(*)[101]”类型的参数不兼容,我不知道该怎么做做。

这些是有错误的行。

        matrixC[1][1]=matrixMultiplication(matrixA[1][1], matrixB[1][1], lenght / 2) + matrixMultiplication(matrixA[1][2], matrixB[2][1], lenght / 2);
        matrixC[1][2]=matrixMultiplication(matrixA[1][1], matrixB[1][2], lenght / 2) + matrixMultiplication(matrixA[1][2], matrixB[2][2], lenght / 2);
        matrixC[2][1]=matrixMultiplication(matrixA[2][1], matrixB[1][1], lenght / 2) + matrixMultiplication(matrixA[2][2], matrixB[2][1], lenght / 2);
        matrixC[2][2]=matrixMultiplication(matrixA[2][1], matrixB[1][2], lenght / 2) + matrixMultiplication(matrixA[2][2], matrixB[2][2], lenght / 2);

标签: c++strassen

解决方案


在您的MatrixMultiplication()函数中,您返回一个void,但您的程序正在等待它返回一个int。您需要更改MatrixMultiplication以返回一个 int。


推荐阅读