2012-04-29 75 views
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); 
} 
+1

您在标记为“问题出在哪里”的行上没有使用您的索引'i,j,k'。此外,你不计算总和(正如你在做矩阵产品时所做的那样)。 – 2012-04-29 03:07:18

+1

我建议阅读数组,指针和他们的关系。如果你找不到这个问题,你显然不了解事情的工作原理。 (DynMatC + n * i + j)= *(DynMatA + n * i + j)*(* DynMatB + n * i + j); – Jasper 2012-04-29 03:11:04

回答

0
  • 你不使用你的指数i,j,k您所标记线“问题出在哪里。”
  • 索引将取决于您如何存储DynMatADynMatB(按行或按列)。
  • 你没有计算总和(正如你在做矩阵产品时所做的那样)。
  • 当你的函数结束时,你也有内存泄漏。
  • 您应该使用更新的编译器。
+0

*这是我到目前为止所做的。我现在正在努力总结,但我仍然有一些错误。 – T4000 2012-04-29 03:35:00

+0

@ T4000你在这段代码中有一个错误:'(* DynMatB + n * i + j)'没有做你认为的事情。无论如何,你应该使用'v []'符号。例如,'DynMatA [n * i + j]'。 – 2012-04-29 05:06:43