2013-09-28 2 views
0

Read an unknown number of lines from console in c++에서 제 질문에 대한 답을 얻었습니다. 그러나 여전히 솔루션은 나를 위해 작동하지 않습니다. 도와주세요. 이것은 특정 질문을 위해 구현 한 완전한 코드입니다. 첫 번째 블록은 여러 줄을 읽는 코드입니다.알 수없는 행 수를 읽음 C++

#include<iostream> 
    #include<string> 
    #include<stdlib.h> 
    #include<vector> 

    using namespace std; 

    int main() 
    { 
     vector<int> numbers; 
     string line; 
     int num = 0,rem = 0,count=0; 
     while(getline(cin,line)) 
     { 
     if(line.empty()) 
     { 
//  cout<<"line check successful"<<endl; 
     break; 
     } 
     numbers.push_back(atoi(line.c_str())); 
     } 
     cout<<endl; 
     for(int i =0;i<numbers.size();i++) 
     { 
     num = numbers[i]; 
     for(int j=1;j<=num;j++) 
     { 
     while(j) 
     { 
      rem = j % 10; 
      if(rem != 3 || rem !=7 || rem!=9) 
      { 
       j = j/10; 
       continue; 
      } 
      count ++; 
      j = j/10; 
     } 
    } 
    cout<<count<<endl; 
    count = 0; 
} 

}

그것의 첫 번째 부분은 알 싫군 라인을 읽을 ALGO이다. 그러나 빈 반환 또는 입력없이 그냥 누르면 루프가 멈추지 않습니다. 어디서 잘못 될지 지적 해 주시겠습니까? 미리 감사드립니다. 코드의이 부분에서

+0

제목이 질문과 아무런 관련이 없습니다. 무한 루프를 없애기 위해 수학을 확인하십시오. – yngccc

+0

코드를 디버깅 했습니까? 일부 변수를 인쇄하십시오. – keyser

+0

@yngum 첫 번째 블록을 확인하십시오. 즉, 콘솔에서 입력 된 내용을 읽는 부분입니다. 그 무한 루프가 진입을 멈추게해야합니다. 나는 지금 분명하다. –

답변

2

봐 :

for(int j=1;j<=num;j++) 
{ 
    while(j) 

j는 0이고, 다음은 for 루프로 이동하고 J를 증가, 그래서 j는 지금 1 때까지 루프가 중지하지 않는 동안 만 while 루프는 j가 0이 될 때까지 다시 실행되므로 영원히 반복됩니다.

+0

지적 해 주셔서 감사합니다. 하지만 제 문제는 그 전에도 있습니다. 위의 while 루프. 루프가 종료되지 않습니다. –

+1

@LakshmiNarayanan : 그리고 어떻게 끝나지 않는지 어떻게 알 수 있습니까? –

+0

if 내부의 cout 문이 실행되지 않았습니다. 왜 내가 그걸 주석으로 처리했는지. 웬일인지, 나는 그것을 다시 시험해 보았다. 네가 지적한 문제는 맞습니다. 감사합니다. –

관련 문제