#include <iostream>
#include <limits>
using namespace std;
int main()
{
double input = -1;
bool valid= false;
do
{
cout << "Enter a number: " << flush;
cin >> input;
if (cin.good())
{
//everything went well, we'll get out of the loop en return the value
valid = true;
}
else
{
//something went wrong, we reset the buffer's state to good
cin.clear();
//and empty it
cin.ignore(numeric_limits<streamsize>::max(),'\n');
cout << "Invalid input; please re-enter." << endl;
}
} while (!valid);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgZG91YmxlIGlucHV0ID0gLTE7CiAgICBib29sIHZhbGlkPSBmYWxzZTsKICAgIGRvCiAgICB7CiAgICAgICAgY291dCA8PCAiRW50ZXIgYSBudW1iZXI6ICIgPDwgZmx1c2g7CiAgICAgICAgY2luID4+IGlucHV0OwogICAgICAgIGlmIChjaW4uZ29vZCgpKQogICAgICAgIHsKICAgICAgICAgICAgLy9ldmVyeXRoaW5nIHdlbnQgd2VsbCwgd2UnbGwgZ2V0IG91dCBvZiB0aGUgbG9vcCBlbiByZXR1cm4gdGhlIHZhbHVlCiAgICAgICAgICAgIHZhbGlkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgLy9zb21ldGhpbmcgd2VudCB3cm9uZywgd2UgcmVzZXQgdGhlIGJ1ZmZlcidzIHN0YXRlIHRvIGdvb2QKICAgICAgICAgICAgY2luLmNsZWFyKCk7CiAgICAgICAgICAgIC8vYW5kIGVtcHR5IGl0CiAgICAgICAgICAgIGNpbi5pZ25vcmUobnVtZXJpY19saW1pdHM8c3RyZWFtc2l6ZT46Om1heCgpLCdcbicpOwogICAgICAgICAgICBjb3V0IDw8ICJJbnZhbGlkIGlucHV0OyBwbGVhc2UgcmUtZW50ZXIuIiA8PCBlbmRsOwogICAgICAgIH0KICAgIH0gd2hpbGUgKCF2YWxpZCk7Cn0=