0

我写了一个函数来计算两个动态数组的乘积。我的函数给了我随机数而不是预期的结果。我有两个初始化动态矩阵 A 和 B 的函数。现在,当我尝试计算动态矩阵 C 使得 C=A*B 时,我的函数没有显示正确的结果。我检查了我的代码,似乎我在某个地方做错了,但我无法弄清楚问题到底出在哪里。下面,我粘贴了计算 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 回答