0

2 つの動的配列の積を計算する関数を作成しました。私の関数は、期待される結果ではなく乱数を返します。動的行列 A と B を初期化する 2 つの関数があります。ここで、C=A*B となる動的行列 C を計算しようとすると、関数が正しい結果を表示しません。コードをチェックしたところ、どこかで間違っているようですが、どこに問題があるのか​​ 正確にわかりません。以下に、C=A*B を計算する関数を貼り付けました。Dev-C++ を使用して C++ で記述しました。あなたの助けは非常に高く評価されます。

void CalculateDynamicMatC( double *DynMatA, double *DynMatB, int n)
{
   int i, j, k, m=10; 
   double *DynMatC=new double [m*m] ;


   for(i=0; i<n; i++)
    for(j=0; j<n; j++)
     for( *DynMatC=k=0; k<n; k++)    
      *DynMatC = *(DynMatA)*(*DynMatB);  //where the problem is!!!

    for(int r=0; r<n; r++, cout<<endl)
      for(int c=0; c<n; c++)
        cout << setw(5) << *(DynMatC+n*r+c);
}
4

1 に答える 1

0
  • i,j,k「問題のある場所」とマークした行でインデックスを使用していません。
  • インデックス作成は、保存方法DynMatADynMatB(行単位または列単位) によって異なります。
  • 合計を計算していません (行列の積を計算するときのように)。
  • 関数が終了すると、メモリリークも発生します。
  • 最新のコンパイラを使用する必要があります。
于 2012-04-29T03:10:10.813 に答える