Я пытаюсь написать программу, которая просит пользователя ввести цифры от 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;
}
Заранее спасибо!
использование
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";
Поскольку внутри цикла нет разрывов (или других фрагментов кода, которые могут перескочить), все после структуры 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;
}
Напишите оператор if перед циклом while.
if(!(n>0 && n<1000000))
{
cout << "....";
return -1;
}
while(..)