bool UserInput::validate(istream &cinINPUT, int &reINPUT, int a){
done = true;
if ( !(cinINPUT >> reINPUT) ){ // cin >> in1 returns true if it matches data container
cin.clear(); // clear input cache
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // ignore anything in buffer
done=false; // Set return to FAIL
}else if ( cin.peek() != '\n'){ // Read next digit in Stream, if it is NOT a new line, then error
cin.clear(); // clear input cache
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // ignore anything in buffer
done=false; // Set return to FAIL
}else if ( reINPUT > a || reINPUT < 1 ){ // Test if input is out of range
cin.clear(); // clear input cache
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // ignore anything in buffer
done=false; // Set return to FAIL
}else{
cin.clear(); // clear input cache
cin.ignore(numeric_limits<streamsize>::max(), '\n'); // ignore anything in buffer
done=true;} // If everything is cool and it is clean input - Set return to TRUE
return (done); //Returns a BOOL value for if input is valid. +the reference changes the user variable in1/in2.
}
Ym9vbCBVc2VySW5wdXQ6OnZhbGlkYXRlKGlzdHJlYW0gJmNpbklOUFVULCBpbnQgJnJlSU5QVVQsIGludCBhKXsKCWRvbmUgPSB0cnVlOwoJaWYgKCAhKGNpbklOUFVUID4+IHJlSU5QVVQpICl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2luID4+IGluMSByZXR1cm5zIHRydWUgaWYgaXQgbWF0Y2hlcyBkYXRhIGNvbnRhaW5lcgoJCWNpbi5jbGVhcigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBpbnB1dCBjYWNoZSAKCQljaW4uaWdub3JlKG51bWVyaWNfbGltaXRzPHN0cmVhbXNpemU+OjptYXgoKSwgJ1xuJyk7ICAgICAgLy8gaWdub3JlIGFueXRoaW5nIGluIGJ1ZmZlcgoJCWRvbmU9ZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcmV0dXJuIHRvIEZBSUwKICAgCgl9ZWxzZSBpZiAoIGNpbi5wZWVrKCkgIT0gJ1xuJyl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIG5leHQgZGlnaXQgaW4gU3RyZWFtLCBpZiBpdCBpcyBOT1QgYSBuZXcgbGluZSwgdGhlbiBlcnJvcgoJCWNpbi5jbGVhcigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBpbnB1dCBjYWNoZSAKCQljaW4uaWdub3JlKG51bWVyaWNfbGltaXRzPHN0cmVhbXNpemU+OjptYXgoKSwgJ1xuJyk7ICAgICAgLy8gaWdub3JlIGFueXRoaW5nIGluIGJ1ZmZlcgoJCWRvbmU9ZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcmV0dXJuIHRvIEZBSUwKCgl9ZWxzZSBpZiAoIHJlSU5QVVQgPiBhIHx8IHJlSU5QVVQgPCAxICl7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXN0IGlmIGlucHV0IGlzIG91dCBvZiByYW5nZQoJCWNpbi5jbGVhcigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciBpbnB1dCBjYWNoZSAKCQljaW4uaWdub3JlKG51bWVyaWNfbGltaXRzPHN0cmVhbXNpemU+OjptYXgoKSwgJ1xuJyk7ICAgICAgLy8gaWdub3JlIGFueXRoaW5nIGluIGJ1ZmZlcgoJCWRvbmU9ZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcmV0dXJuIHRvIEZBSUwKCgl9ZWxzZXsKCQljaW4uY2xlYXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgaW5wdXQgY2FjaGUgCgkJY2luLmlnbm9yZShudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCksICdcbicpOyAgICAgIC8vIGlnbm9yZSBhbnl0aGluZyBpbiBidWZmZXIKCQlkb25lPXRydWU7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZXZlcnl0aGluZyBpcyBjb29sIGFuZCBpdCBpcyBjbGVhbiBpbnB1dCAtIFNldCByZXR1cm4gdG8gVFJVRQoKCXJldHVybiAoZG9uZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUmV0dXJucyBhIEJPT0wgdmFsdWUgZm9yIGlmIGlucHV0IGlzIHZhbGlkLiArdGhlIHJlZmVyZW5jZSBjaGFuZ2VzIHRoZSB1c2VyIHZhcmlhYmxlIGluMS9pbjIuCn0=