2014-10-06 2 views
0

Я пытаюсь написать программу, которая запрашивает у пользователя ввести цифры от 0 до 1000000. и выводит возникновение определенного числа (что пользователь вошел, а)Хотя петли выражение

Я написал эта программа, и я считаю, что она работает хорошо, но у меня есть одна проблема, которая заключается в том, что выражение while не является истинным, я хочу отключить определенное сообщение, но я не знаю, где его разместить.

Вот моя программа:

#include <iostream> 
using namespace std; 
int main() 
{ 
int n,j=0,key; 
cout << "Pleaser enter digits\n"; 
cin >> n; 
cout << "please enter key number\n"; 
cin >> key; 

while (n>0 && n<1000000) 
{ 
    if(n%10==key)j++; 
     n= n/10; 
} 

cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
} 

Заранее спасибо!

+0

Вы можете просто обернуть время цикла в '' if' else' состояниях блока, так что 'если (п <=0 || n > = +1000000) COUT <<«недействительный Params»; else {while ...} ' – EdChum

+0

Вы ** сделаете ** cout определенное сообщение, если условие while не соответствует действительности. Вы имели в виду «если выражение while не верно в первый раз»? – TobiMcNamobi

+0

@TobiMcNamobi Да, он имел в виду, когда пользователь вводит значение n не в диапазоне (0, 1000000) –

ответ

2

Использование

if(n>0 && n<1000000) 
{ 
    while(n) 
    { 
     if(n%10==key) 
     j++; 
     n= n/10; 
    } 
} 
else 
cout<<"n is supposed to be between 0 and 1000000"; 
0

Напишите, если заявление перед во время цикла.

 if(!(n>0 && n<1000000)) 
     { 
      cout << "...."; 
      return -1; 
     } 

     while(..) 
0

Поскольку не существует никаких перерывов (или никакой другой кусок кода, который может прыгать) внутри bucle, все после того, как структуры в то время как выполняется, так как выражение возвращается ложь.

while (n>0 && n<1000000) 
{ 
    if(n%10==key)j++; 
    n= n/10; 
} 
cout << "While expression not anymore true" << endl; 
cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
} 

UPDATE

На основе комментариев, кажется, что вы хотите проверить, если введенный номер действителен или нет. Просто, просто проверить его перед временем:

if(not (n>0 and n<1000000)) cout << "Number must be between 0 and 1000000" << endl; 
else { 
    while (n) 
    { 
     if(n%10==key)j++; 
     n= n/10; 
    } 
} 
cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
}