2013-11-02 248 views
1

我必须通过C从文件中提取矩阵并计算它的行​​列式。要做到这一点,任何矩阵高达3x3我相信我会需要知道矩阵的尺寸,但我很新的编程,所以我不知道我有什么选择。C中矩阵的尺寸

如果我有一个带有未指定矩阵的.dat文件,该怎么做才能找到矩阵的尺寸?

正如我不知道我的选择是

+0

这可能有帮助吗? http://stackoverflow.com/questions/37538/how-do-i-determine-the-size-of-my-array-in-c – codedude

+0

如果你想计算矩阵的行列式,矩阵总是形式'nxn'。在这种情况下,您可以逐行阅读内容,直到“EOF”。然后你知道等于列数的行数。 – PhillipD

+0

我想到了,但不幸的是我不知道如何阅读linewise内容? – Carterini

回答

0

应对您发表评论:

您可以通过计算\n数来决定文件中的行数。

#include <stdio.h> 

int main(void) { 

    int lines = 0; 

    FILE *fh; 

    fh = fopen("matrix.dat", "r"); 

    int ch; 

    while (EOF != (ch=fgetc(fh))) 
    if (ch=='\n') 
     ++lines; 

    fclose(fh); 

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

    return 0; 

} 
+0

啊好的,我不知道fgetc()对此很新颖。我非常感谢你的帮助,我觉得我正在慢慢获得它! – Carterini

+0

快速问题,什么是ch?它只是一个你使用的临时整数吗? – Carterini

+0

@Carterini'ch'是一个临时变量。 'fgetc(file_handle)'从文件中读取单个字符,即每次我们调用'fgetc()'我们都覆盖'ch',即它确实是一个临时的。有关'getch()'的更多信息,请参阅http://www.cplusplus.com/reference/cstdio/getchar/ – PhillipD

1

以及你可以做什么摆阵,并因为它是方阵 行数=数在正确的方向一推将是有益的 找到元素个数的平方根

接入是通过M [i * d + j] d是矩阵的维数r = c = d;

提示使用动态数组指针即

+1

http://www.cs.bu.edu/teaching/c/file-io/intro/试试这个来读取文件希望它有帮助 –