2013-11-03 2 views
0

Итак, мое назначение - создать программу, которая считывает неизвестную матрицу из файла, а затем вычисляет ее определитель определенным образом. Я в значительной степени делаю, за исключением того, что цифры, похоже, смешались после получения их из файла.Матрица не читается правильно

Это, наверное, проще, если вы просто посмотрите на мой код, это часть до тех пор, только после прочтения матрицы, значения, как я сказал, все перемешалось

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

Так Ер, если вы, ребята, можете увидеть что-нибудь, пожалуйста, скажите мне, я действительно новичок в этом, поэтому, вероятно, я пропустил что-то очевидное, спасибо.

ответ

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.

Смежные вопросы