2012-03-15 2 views
0

일반 프로젝트 도움말이 필요합니다. 기본적으로 저는 8 명의 플레이어에게이 작업을 수행해야합니다. 숫자는 전화를해야하는 파일에서 나옵니다. 처음 5 개의 게임에 대한 첫 번째 5 개의 숫자, 리바운드에 대한 다음 5 개의 숫자, 그리고 블록에 대한 숫자입니다. 나는 이름, 성, 점, 리바운드 및 블록을 읽으려면 루프를 호출해야한다고 가정하고 정보를 처리 한 다음 정보를 출력합니다. 팁/제안 사항이 있습니까? 텍스트 파일에서파일/정보 반환을 통해 정렬

예 : 내가 생각하고있는 무슨에서

Thomas Robinson 17 28 10 16 10 11 12 13 8 9 1 1 1 0 1 

전 내가이 숙제 생각하지만

  Game Log 
----------------------------------------------------------------------------- 

Player Name : Thomas Robinson 
----------------------------------------------------------------------------- 
Game #  Points  Rebounds  Blocks 
----------------------------------------------------------------------------- 
    1 17 11 1 
    2 28 12 1 
    3 10 13 1 
    4 16 8 0 
    5 10 9 1 
----------------------------------------------------------------------------- 
+2

스택 오버플로에 오신 것을 환영합니다! 지금까지 뭐 해봤 어? 무엇이 문제를 일으켰습니까? –

+0

선생님은 미리 정의 된 함수를 호출하여 우리 자신의 함수를 만들어야합니다. 배열과 루프 사용하기. 지금 나는 선수의 이름을 적재하고 테이블에 통계를 넣기 위해 배열을 얻는 작업을하고 있습니다. – user1270476

답변

0

에 해당 정보를 반환 알 수 없기 때문에 어떤 함수를 사용할 수 있고 어떤 함수가 사용할 수 없는지, 내 대답이 요청에 맞지 않을 수 있습니다.

처음에는 세 가지 아이디어가 있습니다. ifstream::get()

ifstream in_file; 
in_file.open("your_file_name.txt"); 
char ch; 
string str = ""; 
while(in_file.get() != '\n') 
{ 
    str = ""; 
    while((ch = in_file.get()) != ' ') 
    { 
    // add ch to str. 
    str += string(&ch, 1); 
    } 
    // push str into an array, vector, stack, etc. 
    /*...*/ 
} 
in_file.close(); 

2)는 split 기능을 사용하여 다음 string에 라인을 읽고, 사용

1), 당신은 사방 split 기능을 구현하는 방법을 찾을 수 있습니다.

3) ifstream::getline() 함수를 사용하면 delemiter 매개 변수를 제공합니다.

당신이 ifstream::get()의 사용 및 ifstream::getline() herehere

내가 1에서 제공하는 코드를) 찾을 수

좋은 연습이 아마, 당신은 'EOF'스트림 오류를 확인해야합니다, in_file.open()의 예외 등

BTW, 내가 먼저 쓴 코드는 당신이 str += string(ch) 사용할 수 없습니다, 오류 코드이고, 당신은 당신이 string 's의 생성자 here을 찾을 수 있습니다 str += chstr += string(&ch, 1) 또는 str += string(1, ch)를 작성하거나해야 하나. 죄송합니다 오류 코드를 다시.

+0

'str + = string (ch);'정말로 요? 또한 예기치 않은 EOF (또는 기타 스트림 오류)를 올바르게 처리하지 못합니다. – Josh

+0

도움을 주시면 감사하겠습니다. 지금 바로 구현하고 있습니다. 나는 그것이 곧 어떻게 될지 당신에게 알려 줄 것이다. – user1270476

+0

@Josh Umm ... 코드가 제대로 확인되지 않아 문제를 해결할 수있는 방법을 제공합니다. – shengy

0

">>"연산자를 사용하여 파일을 구문 분석 할 수 있습니다. 공백과 개행으로 모두 구분하면 꽤 잘됩니다. ">>"연산자가 어떻게 작동하는지. 예, 루프가 필요합니다. 기본적으로 루프는 다음과 같이 작동합니다.

(Comp Sci 1에서이 작업을 수행 할 수 있다는 것을 결코 알지 못했습니다. 많은 어려움을 덜어 줬을 것입니다 ... 나는 다른 대답과 같은 것을 사용했습니다. 그렇지 않으면 일을.)

(나는 또한 당신이 ifstream으로 txt 파일을 여는 방법을 알고 있으리라 믿고있어., http://www.cplusplus.com/reference/iostream/ifstream/open/를 참조하십시오.)

int temp; 
int n = 0; 
int x = 1; 

while(textfile >> temp) // Each time through the loop, this will make temp 
         // the next value in the file. It will stop when 
         // there's nothing more to read. 
{ 
    /* Now it's going to go from left to right through the file, so you 
     need some logic to put it in the right place. you know that every 
     five numbers start a new column, so:*/ 

    array[x][n] = temp; //Start x at 1 because you're skipping the first column 
    n++; 
    if (n == 5) { 
     n = 0; 
     x++; //Every five values, move on to the next column 
    } 

이제 물건이있을 것이다 배열이가 필요가있는 있다. 계획대로 출력하십시오.

관련 문제