gpt4 book ai didi

c - "Array Subscript is not an integer"c

转载 作者:行者123 更新时间:2023-12-04 09:40:52 24 4
gpt4 key购买 nike

我正在尝试使用 for 循环进行矩阵乘法,但出现错误“数组下标不是整数”,请问我能得到一些帮助吗。

#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 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;
}

最佳答案

下标或数组索引需要是 int值(value)。因此,改变这个:

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

关于c - "Array Subscript is not an integer"c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30001752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com