Пока зацикливается выражение

Я пытаюсь написать программу, которая просит пользователя ввести цифры от 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(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";
2

Другие решения

Поскольку внутри цикла нет разрывов (или других фрагментов кода, которые могут перескочить), все после структуры while выполняется, потому что выражение вернуло false.

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;
}

ОБНОВИТЬ

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

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;
}
0

Напишите оператор if перед циклом while.

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

while(..)
0