Всем привет.
Послушала я про то, что необходимо портфолио и решила что-то придумать (мои программы не перевернут этот мир, но с чего-то необходимо начинать).
Так вот, решила я сделать программку, в которой пользователь должен ввести число и при любом раскладе он не выиграет. Необходимо ему ввести число от 1 до 10 включительно (только целочисленные значения). Если пользователь вводит число целочисленное, не входящее в указанный промежуток, то программа сообщает ему об ошибке и просит ввести число, отвечающее требованиям. Здесь все хорошо, но трудности у меня возникли с тем, что если пользователь введет вещественное число либо букву/символ (в общем все, что не является целочисленным числом), то цикл просто начинает бесконечно прокручиваться.
Сам код:
#include <iostream>
#include <string>
#include <time.h>
#include <cctype>
using namespace std;
int main()
{
srand(time(NULL));
int a;
const int SIZE = 10;
int isdigit( int a );
int arr[SIZE];
cout<<"Input number from 1 to 10:\t";
cin>>a;
while (isdigit(0))
{cout<<"Error!!! Please input number from 1 to 10!"<<endl<<endl;
cout<<"Input number from 1 to 10:\t";
cin>>a; }
while (a<1 ||a>10)
{ cout<<"\nError!!! Please input number from 1 to 10!"<<endl<<endl;
cout<<"Input number from 1 to 10:\t";
cin>>a;}
cout<<"\nYour number is \t"<<a<<endl<<endl;
for (int i = 0; i<SIZE;)
{
arr[i] = 1+ rand()%10;
if (a!=arr[i]){
cout<< arr[i]<<"\t";
i++;
}
else continue;
}
cout<<"\n\nSorry, but you lose :(\n\nTry again, maybe you'll win";
}
Подскажите, пожалуйста, как можно выйти из цикла в случае ввода вещественного числа/символа/буквы и предложить пользователю заново ввести число.
Спасибо!