2013-04-17 3 views
0

필자는 익숙하지 않은 해싱을 사용하여 작성해야하는 프로그램이 있으며 실제로 이해하지 못합니다. 지금 나는 내가 읽는 단어 사이의 공백을 계산하는 데 어려움을 겪고있다. 문자가 하나의 공백으로 분리되어 있고 일단 코드가 읽히는 경우 두 개의 공백으로 분리된다. 내 디코드 함수 잘 작동하지만 공간을 계산하는 방법을 모르겠습니다. 내가 시도한 한 가지가 있지만 도움이되지 않는다면 큰 도움이 될 것입니다.MorseCode Decoder 해시 계산 및 공백 계산에 문제가 있음 C++

string tmp; 
MORSE TABLE[20]; 
int j = 0, f = 0, k = 0; 
char x; 
while(!infile.eof()) 
{ 
    infile >> tmp; 
    infile.get(x); 
    if(x == ' ') //check if x is a space 
    { 
     infile.get(x); //read next character 
     if(x == ' ') //check and see if next char is a space 
     { 
      TABLE[k].insert(' '); //insert space into char array for printing 
     } 
     } 

    if(j >= f) //if true create new object 
    { 
     k++; f+=100; 
    } 

    TABLE[k].decode(tmp);//pass in string to decode 
    j++; 
}//end while loop 

도움을 주실 수 있습니다. 나는 매우 진보 된 C++ 사람이 아니라 초보자입니다.

답변

0

기본적으로 스트림은 flag으로 제어 할 수있는 공백을 건너 뜁니다. BTW

string line; 
while(getline(infile, line)) 
{ ...use line... } 

:

  • while(!in.eof()) 당신이 스트림에서 읽을 수 있음을 보증하지 않습니다 그러나, 나는 그렇지 않으면 당신은 또한 줄 바꿈을 처리 할 필요가, 당신에게 줄 기반의 접근 방식을 제안 것 . 읽기를 시도하고 대신 성공을 확인하십시오. 위는 이미 그것을한다.
  • 정확한 입력과 정확한 예상 출력을 제공하면 도움이됩니다. 파일 내용으로 초기화 된 문자열 스트림으로 시작한 다음 파일 스트림에서 단일 요소를 읽습니다. 불필요한 부분을 제거한 후에 추가 코드를 제공하십시오.
+0

감사합니다. 중대한 도움 나는 두번째 if 진술을 위해 peek()을 사용하는 것을 끝내었고 그것은 내가 필요로하는 것을하기 위해 밝혀졌다. 그러나 응답에 감사드립니다. – bwin