我遇到了一个让我很困惑的问题。我想要一个稀疏矩阵存储在 3 个数组中并执行矩阵/vector 乘法。 Matrix 和 vectorB 在文件中是红色的。这就是背景。问题在于不需要更改作为 double 组“参数”的整数数组元素的值。这是我正在做的事情:
int row[ELEMENTS_NO] = {0};
int col[ELEMENTS_NO] = {0};
double values[ELEMENTS_NO] = {0.0};
double vectorB[M_SIZE] = {0.0};
double res[M_SIZE]={0.0};
...reading row,col,values, from the file...
printf("\n row[0]:%d, col[0]:%d",row[0],col[0]);
for (k = 0; k < ELEMENTS_NO; k++) {
res[row[k]] = res[row[k]] + values[k]*vectorB[col[k]];
}
printf("\n\n\n row[0]:%d, col[0]:%d",row[0],col[0]);
第一次打印的输出是正确的:
row[0]:1, col[0]:1
而第二次打印给出了以下输出:
row[0]:1352932126, col[0]:1
为什么执行for循环后col数组的值改变了?如何解决我的问题并保持 row 和 col 元素不变?
感谢您提供有用的信息!
最佳答案
检查 row[k] 的值并确保它在 0 到 ELEMENTS_NO 之间
关于c - 数组元素的不需要的更改值是 C 中第二个数组的地址/元素数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572095/