2012-09-30 3 views
0

파일 끝에서 문자로 파일에서 데이터를 읽는 중이라면 출력 할 수 있어야합니다. 값은 실수 또는 정수였습니다.대기열 내용 (if 문)을 기준으로 숫자가 실수인지 또는 정수인지를 결정합니다.

get()을 사용하여 데이터를 읽은 후 첫 번째 부분이 integerQueue 인 경우 두 개의 다른 대기열에 저장했습니다. '.' 읽은 다음 나머지 데이터를 realQueue로 전환합니다. 그에 따라 인쇄하십시오.

인쇄시 문제가 있습니다. 다음 제대로 값 ....

else if(isdigit(temp) || temp == '.') 
    { 
      integerQueue.push(temp); 
      char temp2 = readFile.get(); 
      while(isdigit(temp2)) 
      { 
       integerQueue.push(temp2); 
       temp2 = readFile.get(); 
      } 
      if(temp == '.') 
      { 
       realQueue.push(temp); 
       temp2 = readFile.get(); 
       while(isdigit(temp2)) 
        { 
         realQueue.push(temp2); 
         temp2 = readFile.get(); 
        } 
      } 
      if(realQueue.empty()) 
      { 
      writeFile <<"Integer:  "; 
       while(!integerQueue.empty()) 
       { 
       writeFile <<integerQueue.front(); 
       integerQueue.pop(); 
       } 
      } 
      else 
      { 
       writeFile<<"Real:  "; 
       while(!integerQueue.empty()) 
       { 
       writeFile <<integerQueue.front(); 
       integerQueue.pop(); 
       } 
       while(!realQueue.empty()) 
       { 
       writeFile <<realQueue.front(); 
       realQueue.pop(); 
       } 
      } 
+0

입력 사항 – user1708860

+1

코드를 컴파일하고 실행하고 문제를 보여줄 수있는 가장 작은 코드로 줄이십시오. –

+0

입력은 파일에서 readFile.get()을 사용하여 – user1050632

답변

1

10 행 : - 당신이 대신 읽은 마지막 하나의 코드의이 부분에 들어가는 첫 번째 문자를 읽고 (하나 if(temp == '.') 그냥 라벨 정수에 모든 것을 유지 결국 while 루프는 중단됩니다). temp2가 temp가 아닌 '.'와 같은지 확인해야합니다.

+0

감사합니다. 코딩 시간이 많아서 다시 작은 일을 그리워합니다. – user1050632

+0

변수 이름을 지정하고 코드를 조금만 정리하면 이러한 종류의 실수를 예방할 수 있습니다 . 이러한 중복 된 코드의 많은 이유는 없습니다. – user1708860

+0

... 또는 다른 접근법을 사용하십시오 : 공백없이 라인이나 덩어리의 데이터를 읽은 다음 그 점이 숫자 만인지 점이 있는지 확인하십시오. 선형 데이터로 for-loop를 쉽게 사용할 수있는 경우 큐를 사용하는 것은 약간의 과잉입니다. –