C/C++

Что не так с программой?

Пытаюсь сделать так, чтобы при вводе буквы выводилось сообщение "Введите число", но в итоге даже если вводишь числа все равно выводится это сообщение
Elnur Haciyev
Elnur Haciyev
504
проверка не верная, читай строку или проверяй на 0
DC
Da"win" Chi
80 864
Лучший ответ
 #include 
using namespace std;

int input()
{

int inte; //проверяемая переменная
while(true) //цикл проверки ввода
{
cin >> inte; //ввод переменной через оператор >>
if (!cin.fail() && cin.rdbuf()->in_avail()==1) return inte;
//если ввод был успешный и остатка не осталось значит число правильное
//иначе выводим предупреждающее сообщение
cout in_avail(), '\n');
}
}

int main()
{
int a = input();
cout
не так примерно всё...
https://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt
"If extraction fails (e.g. if a letter was entered where a digit is expected), zero is written to value and failbit is set."
то есть вместо этой чепухи с isdigit тебе нужно проверять failbit у cin после ввода, альтернативный вариант - вводить string-и и уже потом пытаться конвертировать их в инты

для того, чтобы понять, что вообще делает то, что написано в текущий момент, советую почитать про побитовые операции (a|b - как раз побитовое "или") и доку по ctype (в частности по isdigit)
здесь после побитового "или" получается бессмысленное значение, с которым isdigit вряд ли сделает что-то толковое, т.к. ожидает на вход код ascii-символа
Что за херню ты выс@ал со строкой is digit , как ты вообще передаешь параметры в функцию тут ошибка, хочешь секрет расскажу в int у тебя по-любому число запишется буквы быть не может кроме определенных записей , используй блок try catch почитай на метаните о них