#include <iostream>
#include <string>
#include <stdexcept>
#include <limits>
using namespace std;
int main() {
int num = 0;
string s;
size_t pos;
while (true){
cout << "enter num: ";
if (!(cin >> s)){
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "input error, try again" << endl;
}
else{
try{
num = stoi(s, &pos);
if (pos != s.size()) throw invalid_argument("");
if (num > 0){
break;
}
cout << "num must be greater than 0" << endl;
}
catch (const exception &){
cout << "num must be an int" << endl;
}
}
}
cout << num;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3RkZXhjZXB0PgojaW5jbHVkZSA8bGltaXRzPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgbnVtID0gMDsKCXN0cmluZyBzOwoJc2l6ZV90IHBvczsKIAoJd2hpbGUgKHRydWUpewoJCWNvdXQgPDwgImVudGVyIG51bTogIjsKCQlpZiAoIShjaW4gPj4gcykpewoJCQljaW4uY2xlYXIoKTsKCQkJY2luLmlnbm9yZShudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCksICdcbicpOwoJCQljb3V0IDw8ICJpbnB1dCBlcnJvciwgdHJ5IGFnYWluIiA8PCBlbmRsOwoJCX0KCQllbHNlewoJCQl0cnl7CgkJCQludW0gPSBzdG9pKHMsICZwb3MpOwoJCQkJaWYgKHBvcyAhPSBzLnNpemUoKSkgdGhyb3cgaW52YWxpZF9hcmd1bWVudCgiIik7CgkJCQlpZiAobnVtID4gMCl7CgkJCQkJYnJlYWs7CgkJCQl9CgkJCQljb3V0IDw8ICJudW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIgPDwgZW5kbDsKCQkJfQoJCQljYXRjaCAoY29uc3QgZXhjZXB0aW9uICYpewoJCQkJY291dCA8PCAibnVtIG11c3QgYmUgYW4gaW50IiA8PCBlbmRsOwoJCQl9CgkJfQoJfQoKCWNvdXQgPDwgbnVtOwoJcmV0dXJuIDA7Cn0=