こんにちは、誰かが私が間違っていることを理解するのを手伝ってくれますか。行列の乗算を実行する関数を作成します。すべての値が表示されません。私はここで本当に混乱しています。ありがとうございます (C++ は初めてです)
int MultiplyTwoMatrices(int **MatrixA, int rowA, int ColumnA, int **MatrixB, int rowB, int columnB);
int **Matrixmultiply; //I have allocated and freed it's memory
int rowA=4;
int rowB=4;
int columnA=4;
int columnB=4;
int main()
{
for ( x = 0; x < rowA; x++)
{
for (y = 0; y < columnB; y++)
{
Matrixmultiply[x][y] = MultiplyTwoMatrices(MatrixA,rowA,columnA,MatrixB,rowB,columnB);
cout<<Matrixmultiply[x][y] <<"\t";
}
cout<<"\n";
}
int MultiplyTwoMatrices(int **MatrixA, int rowA, int ColumnA, int **MatrixB, int rowB, int columnB)
{
int **temp = NULL;
int sum = 0;
double **Multiple = NULL;
int i=0, j=0;
temp = (int**)malloc(columnB*(sizeof(int*)));
for (int p=0; p<columnB; p++)
{
temp[p] = (int*)malloc(rowB*(sizeof(int)));
}
Multiple = (double**)malloc(rowA*(sizeof(double*)));
for (int p=0; p<rowA; p++)
{
Multiple[p] = (double*)malloc(columnB*(sizeof(double)));
}
for (int p =0; p<columnB; p++)
{
for (int q = 0; q<rowB; q++)
{
temp[p][q] = MatrixB[q][p];
}
}
for (i =0; i<rowA; i++)
{
for (j = 0; j<columnB; j++)
{
for (int r = 0; r<rowB; r++)
{
sum = sum + (MatrixA[i][r] * temp[j][r]);
}
Multiple[i][j] = sum;
return Multiple[i][j];
//cout<<Multiple[i][j]<<"\t";
sum=0;
}
//cout<<"\n";
}
for (int p =0; p<columnB; p++)
free (temp[p]);
free(temp);
for (int p =0; p<rowA; p++)
free (Multiple[p]);
free(Multiple);
}