#include <iostream>
#include <limits>
#include <string>
#include <sstream>
int GetMark( )
{
std:: cout << "enter mark (0 - 100): " << std:: endl ;
std:: string line;
while ( getline( std:: cin , line) )
{
std:: istringstream str( line) ;
int mark;
if ( str >> mark )
{
if ( mark >= 0 && mark <= 100 )
{
return mark;
}
}
std:: cout << "Invalid input: " << line << std:: endl ;
std:: cout << "enter mark (0 - 100): " << std:: endl ;
}
// Unable to read.
// Throw exception, or exit with an error message.
return 0 ;
}
int main( )
{
int mark = GetMark( ) ;
std:: cout << "mark: " << mark << std:: endl ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KCmludCBHZXRNYXJrKCkKewogICBzdGQ6OmNvdXQgPDwgImVudGVyIG1hcmsgKDAgLSAxMDApOiAiIDw8IHN0ZDo6ZW5kbDsKCiAgIHN0ZDo6c3RyaW5nIGxpbmU7CiAgIHdoaWxlICggZ2V0bGluZShzdGQ6OmNpbiwgbGluZSkgKQogICB7CiAgICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHIobGluZSk7CiAgICAgIGludCBtYXJrOwogICAgICBpZiAoIHN0ciA+PiBtYXJrICkKICAgICAgewogICAgICAgICBpZiAoICBtYXJrID49IDAgJiYgbWFyayA8PSAxMDApCiAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG1hcms7CiAgICAgICAgIH0KICAgICAgfQogICAgICBzdGQ6OmNvdXQgPDwgIkludmFsaWQgaW5wdXQ6ICIgPDwgbGluZSA8PCBzdGQ6OmVuZGw7CiAgICAgIHN0ZDo6Y291dCA8PCAiZW50ZXIgbWFyayAoMCAtIDEwMCk6ICIgPDwgc3RkOjplbmRsOwogICB9CgogICAvLyBVbmFibGUgdG8gcmVhZC4KICAgLy8gVGhyb3cgZXhjZXB0aW9uLCBvciBleGl0IHdpdGggYW4gZXJyb3IgbWVzc2FnZS4KICAgcmV0dXJuIDA7Cn0KCmludCBtYWluKCkKewogICBpbnQgbWFyayA9IEdldE1hcmsoKTsKICAgc3RkOjpjb3V0IDw8ICJtYXJrOiAiIDw8IG1hcmsgPDwgc3RkOjplbmRsOwp9Cgo=