好的,所以我的任务是创建一个程序,从文件中读取未知矩阵,然后以某种方式计算它的行列式。我已经完成了很多工作,除了从文件中获取数字后数字似乎有些笨拙。
如果你只是看看我的代码,这可能会更容易,这是直到读完矩阵之后的部分,我说的数值都混乱了
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char* argv[])
{
FILE *input;
int i, j, temp;
int dim=0;
double det;
const char inp_fn[]="matrix.dat";
/*Open File*/
input = fopen(inp_fn, "r");
/*Find the number of lines and hence dimensions*/
while (EOF != (temp = fgetc(input)))
{
if (temp=='\n')
{
++dim;
}
}
/*Reset pointer to beginning of file and float the matrix*/
fseek(input, 0, SEEK_SET);
float matrix[dim][dim];
/*Check file isn't NULL, if good fill the matrix with the values from the file*/
if( (input != (FILE*) NULL) )
{
for(i=0; i<=dim; i++)
{
for(j=0; j<=dim; j++)
{
fscanf(input, "%f", &matrix[i][j]);
}
}
fclose(input);
}
else
{
printf("Could not open file!\n");
}
所以,如果你们能看到任何东西,请告诉我,我真的很新,所以我可能会错过一些明显的东西,谢谢。
答案 0 :(得分:2)
for(i=0; i<=dim; i++)
{
for(j=0; j<=dim; j++)
{
fscanf(input, "%f", &matrix[i][j]);
}
}
必须是i < dim
和j < dim
。
数组的索引从0开始,而不是1。