“El subíndice de matriz no es un número entero” c

Estoy tratando de hacer la multiplicación de matrices usando bucles y recibo un error, “el subíndice de matriz no es un número entero”. ¿Puedo obtener ayuda, por favor?

#include  #include  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 together\n"); printf("%.3f\t%.3f\t%.3f\n",result[0][0],result[0][1],result[0][2]); printf("%.3f\t%.3f\t%.3f\n",result[1][0],result[1][1],result[1][2]); printf("%.3f\t%.3f\t%.3f\n",result[2][0],result[2][1],result[2][2]); system("PAUSE"); return 0; } 

Los subíndices o índices de matriz deben ser un valor int . Por lo tanto, cambia esto:

float i, j, k; a esto: int i, j, k;

Además, ha declarado el result como una matriz de 3X3. Por lo tanto, cuando almacena datos en la matriz, tiene que almacenar elemento por elemento. Entonces, en lugar de esto:

result = result + Matrix_1[i][k] * Matrix_2[k][j]; cámbielo por este: result[i][j] = result[i][j] + Matrix_1[i][k] * Matrix_2[k][j];

Una cosa más: inicializar la matriz de result !! En la statement anterior, está utilizando el valor de sus elementos en la matriz, que quizás tenga un valor de basura, y es posible que no obtenga el resultado deseado. Entonces, antes de usar la matriz de result , inicialízala.

Una forma sencilla:

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

Una última cosa: su for loop externo más externo se ejecuta solo una vez: for (i = 0; i < 1; i++) Probablemente desea esto: for (i = 0; i < 3; i++)

Finalmente, el código modificado: http://ideone.com/26GSJa

 float i, j, k; 

tiene que ser:

 int i, j, k; 

(o cualquier otro tipo de enteros) ya que solo puede usar valores enteros para los índices de matriz.

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