"Array Subscript is not an integer" c



我正在尝试使用for loops进行矩阵乘法,并且我遇到了一个错误,"数组下标不是整数",我可以得到一些帮助。

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  float Matrix_1[3][3] = {{3.4, 4.4, 1.2},{5.3, 5.7, 2.2},{6.2, -2.4, 0.9}};
  float Matrix_2[3][3] = {{7.3, 4.9, 3.7},{-2.4, 4.9, -10.2},{7.3, 5.2, 1.7}};
  float i, j, k;
  float result[3][3];  
  for (i = 0; i < 1; i++)
  {
    for (j = 0; j < 3; j++)
    {
        for(k = 0; k < 3; k++)
        {
              result = result + Matrix_1[i][k] * Matrix_2[k][j];    
        }
    }
   }
  printf("The result of multiplying the matrices togethern");
  printf("%.3ft%.3ft%.3fn",result[0][0],result[0][1],result[0][2]);
  printf("%.3ft%.3ft%.3fn",result[1][0],result[1][1],result[1][2]);
  printf("%.3ft%.3ft%.3fn",result[2][0],result[2][1],result[2][2]);
  system("PAUSE");
  return 0;
}

订阅或数组索引需要为 int值。因此,更改此信息:

float i, j, k;为此:int i, j, k;

另外,您已将result声明为3x3矩阵。因此,将数据存储到矩阵中时,您必须存储元素 - 按 - 元素。因此,而不是这个:

result = result + Matrix_1[i][k] * Matrix_2[k][j];将其更改为:result[i][j] = result[i][j] + Matrix_1[i][k] * Matrix_2[k][j];

另一件事:初始化result矩阵!在上面的语句中,您在矩阵中使用其元素的值,该元素可能具有一些垃圾值,并且您可能无法获得所需的结果。因此,在使用result矩阵之前,请初始化。

一种简单的方法:

for(i=0;i<3;i++)
{
    for(j=0;j<3;j++)
        result[i][j]=0;
}

最后一件事:您的最外部for loop仅运行一次:for (i = 0; i < 1; i++)可能您想要这个:for (i = 0; i < 3; i++)

最后,修改的代码:http://ideone.com/26gsja

float i, j, k;

必须是:

int i, j, k;

(或任何其他整数类型),因为您只能使用数组索引的整数值。

result = result + Matrix_1[i][k] * Matrix_2[k][j];
                           ^  ^ have to be integers

相关内容

最新更新