2013-09-28 3 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; 
} 

}

Первая часть этого является алго читать неизвестные No.of линии. Тем не менее, при пустом возврате или нажатием просто введите без ввода, цикл не останавливается. Не могли бы вы указать, где все пошло не так? заранее спасибо.

+0

название не имеет ничего общего с вопросом, проверьте свою математику, чтобы избавиться от бесконечного цикла – yngccc

+0

Вы отлаживали свой код? Распечатайте некоторые переменные. – keyser

+0

@yngum Пожалуйста, проверьте первый блок. это то, где я читаю строки с ввода, с консоли. Этот бесконечный цикл должен прекратить вносить ввод. Надеюсь, теперь ясно. –

ответ

2

Посмотрите на эту часть кода:

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

пока цикл не остановится, пока J не 0, а затем переходит к цикл и увеличивает J, поэтому J теперь 1, но цикл while снова запускается до тех пор, пока j не станет 0, так что вы будете навсегда.

+0

Благодарим за указание. Но моя проблема еще до этого. Цикл while выше этого. Этот цикл не выходит. –

+1

@LakshmiNarayanan: И откуда вы знаете, что это не выход? –

+0

, что инструкция cout внутри if не выполнялась. вот почему я прокомментировал это. По какой-то причине я попробовал это снова, и это сработало. Да, проблема, которую вы указали, верна. Спасибо. –

Смежные вопросы