c++ - 出现此错误时我该怎么办:“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);
解决方案
在您的MatrixMultiplication()
函数中,您返回一个void
,但您的程序正在等待它返回一个int
。您需要更改MatrixMultiplication
以返回一个 int。
推荐阅读
- php - 如何将 MySQL 表记录变成 PHP 参数
- mysql - Magento 奇怪的查询 100% SQL cpu 峰值
- keras - 计算 Keras 中基于 Jacobian 的数据集增强所使用的梯度
- python - 使用 pip 安装包返回错误
- powershell - 第一次运行脚本较慢
- angular - Angular Material Date 选择器禁用年份选择
- php - 使用 Socialite 在 laravel 中调用 null 上的成员函数 create()
- python - 如何在 ODE 中插入列表:
- django - 在 django-datatable-view 上定义过滤器
- php - 是否可以将代码插入 PHP 字符串