私は2つの行列の積を計算するコードを書いています。私はC = A * Bという行列Cを示す関数を呼び出しています。問題は、私の機能がうまくいかないことです。コンパイラは次のメッセージを表示します。 "` showMatC 'は宣言されていません(最初にこの関数を使用してください)。私はコードを2倍にしましたが、問題を理解することはできません。コードは以下の通りです。どんな助けもありがとう。私はDev-C++を使用しています。呼び出された関数が機能しません
#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<math.h>
using namespace std;
const int N =32;
void initstaticmatrixA(double MatA[][N], int n) //initialize matrix A
{ // regular indexing with 2 indices
for(int i=0; i<n*n; i++)
MatA[i/n][i%n]=i;
}
void initstaticmatrixB(double MatB[][N], int n) //initialize matrix B
{ // regular indexing with 2 indices
for(int i=0; i<n*n; i++)
MatB[i/n][i%n]=i;
}
void showMats(double MatA[][N], double MatB[][N],int n) //display matrices A & B
{
int c;
cout<<"Matrix A: Matrix B:"<<endl;
cout<<"------------ ------------"<<endl;
cout<<endl; //regular indexing
for(int r=0; r<n; r++, cout<<endl)
{
for(c=0;c<n;c++)
cout<<setw(4)<<MatA[r][c];
cout<<" ";
for(c=0;c<n;c++)
cout<<setw(4)<<MatB[r][c];
}
}
void CalculateMatC(double MatA[][N], double MatB[][N], int n) //calculate the product C=A*B
{
int m=n;
double MatC[N][N];
int i, j, k;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
for(MatC[i][j]=k=0; k<n; k++)
MatC[i][j] += MatA[i][k]*MatB[k][j];
showMatC(MatC, m); //Where the problem is!!!!
}
void showMatC(double MatC[][N], int n) //show matrix C
{
int c;
cout<<"Matrix C:"<<endl;
cout<<"------------"<<endl;
cout<<endl; //regular indexing
for(int r=0; r<n; r++, cout<<endl)
for(c=0;c<n;c++)
cout<<setw(4)<<MatC[r][c];
}
int main()
{
const int n=2;
double MatA[N][N], MatB[N][N]; //single
initstaticmatrixA(MatA, n);
initstaticmatrixB(MatB, n);
showMats(MatA,MatB, n);
CalculateMatC(MatA, MatB, n);
cout<<endl<<endl;
system("pause");
return 0;
}
の開始時に最初の使用の前に '' showMatC()を定義します。 –