2011-12-06 3 views
2

나는 double matrix 50x8을 가진 txt 파일을 가지고있다. 처음 두 행은 배열 크기 50x8 행렬을 포함합니다. 내가 위의 코드와이 파일을 읽을 TRID 경우 : 내가 결과를 인쇄 할 때 첫째txt에서 파일 읽기

#include<iostream> 
#include<fstream> 

using namespace std; 

int main() { 

    ifstream infile; 
    infile.open("C:/Users/zenitis/Desktop/BTHAI_2.3b-src/BTHAI/txtFiles/W1.txt"); 
    double events[50][8]; 

    while (!infile.eof()) 
    { 
     for(int j=0;j<50;j++) 
     { 
      for(int k=0; k<8;k++) 
      { 
       infile >> events[j][k]; 
       // infile.get(c 
      } 
     } 
    } //end while 

    infile.close(); 

    for(int i = 0; i<50; i++){ 

     for(int l=0; l<8; l++){ 
      cout << events[i][l] << " "; 
     } 

     cout << "\n"; 
    } 

    cout << events[0][0]; 

    system("pause");  
    return 0; 
} 

를 이벤트 매트릭스의 처음 두 요소는 파일의 마지막 두 가지입니다. 둘째로 어떤 아이디어가 실제로 행렬의 크기 인 두 개의 첫 번째 요소를 읽는가?

답변

3

는이 같은 행과 열의 수를 읽어

int R, C; 
infile >> R; 
infile >> C; 

당신은 파일의 나머지 부분을 읽어 중첩 루프 전에 그것을 할. 그런 다음 하드 코드 50 및 8 대신 루프 끝 타겟으로 파일의 번호를 사용합니다.

+0

xm 고맙습니다. –

+0

또한 while 루프가 불필요합니다. while 루프 내의 코드는 하나의 전체 행렬을 읽습니다. while 루프는 많은 행렬을 읽으며, 이는 원하는 것이 아닙니다. 'while (! infile.eof())'와 그 중괄호 ('{','}')를 삭제하십시오. –

+0

@ snakeplissken : "xm 고마워, 그거." "[답변의 왼쪽에있는 체크 박스 개요를 클릭하여]"(http://stackoverflow.com/faq#howtoask) " – Johnsyweb