Вот верный ответ!
Как же много мусора в интернете, когда одни копипастеры в надежде раскрутить свой блог, распространяют неправильный код, даже не протестив его.
int demo_choice()
{
int a;
int i = 0;
while (!(cin >> a))
{
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
cout << "Не верный ввод!!! Введите число : ";
}
cout << a;
return 0;
}
У вас получается бесконечное количество неудачных попыток. Цикл не бесконечный. После 10 успехов он должен завершиться.
Избавьтесь от вложенных циклов. Используйте break чтобы выйти в случае успеха.