2013-11-02 2 views
0

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

Во всяком случае, проблема заключается в том, что «тусклым» целое число, кажется, не передать, как он печатает кучу безумных чисел

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 


int main(int argc, char* argv[]) 
{ 
    FILE  *input; 
    int  i, j, temp, dim; 
    float  fullmatrix[dim][dim]; 
    const char inp_fn[]="matrix.dat"; 

/*Open File*/ 
input = fopen(inp_fn, "r"); 
dim = 0; 

while (EOF != (temp = fgetc(input))) 
{ 
    if (temp=='\n') 
    { 
     ++dim; 
    } 
} 

if((input != (FILE*) NULL)) 
{ 
    for(i=0; i<=dim; i++) 
    { 
     for(j=0; j<=dim; j++) 
     { 
      fscanf(input, "%f", &fullmatrix[i][j]); 
      printf("%f ", fullmatrix[i][j]); 
     } 
     printf("\n"); 
    } 
    fclose(input); 
} 
else 
{ 
    printf("Could not open file!\n"); 
} 

return(0); 
} 

Я довольно новыми для этого, так что я, наверное, глупо ,

+1

Как бы это знать, что размеры матрицы перед тусклым имеет какое-либо значение? ..... – Bart

+0

Это то, что я думаю, что я запутался, как я могу заставить его сделать часть вначале, чтобы увеличить тусклый, ТО, ЧТО делать все остальное? Кажется, все это происходит сразу. – Carterini

+0

'int i, j, temp, dim; float fullmatrix [dim] [dim]; 'Нет, размер матрицы не будет автоматически синхронизироваться с будущими значениями' dim' –

ответ

0

Я нашел этот код для работы ... но прочитал комментарии \\ и напишите комментарий к массиву переменной длины (VLA).

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 


int main(int argc, char* argv[]) 
{ 
    FILE  *input; 
    int  i, j, temp, dim; 

    const char inp_fn[]="matrix.dat"; 

/*Open File*/ 
input = fopen(inp_fn, "r"); 
dim = 0; 

while (EOF != (temp = fgetc(input))) 
{ 
    if (temp=='\n') 
    { 
     ++dim; 
    } 
} 

float fullmatrix[dim][dim]; // define fullmatrix after dim is known 

// we close and reopen the file. We could also move back to the beginning of the file. 
fclose(input); 

printf("%d\n", dim); 

input = fopen(inp_fn, "r"); 

// Probably not the safest way...we just assume that the file has not change after we 
// determined dim 
for (i=0; i<dim; i++) 
{ 
    for(j=0; j<dim; j++) 
    { 
     fscanf(input, "%f", &fullmatrix[i][j]); 
     printf("%f ", fullmatrix[i][j]); 
    } 
    printf("\n"); 
} 

fclose(input); 


return(0); 
} 

Пример вывода:

3 
1.000000 2.000000 3.000000 
4.000000 5.000000 6.000000 
7.000000 8.000000 9.000000