#include <iostream>
#include <limits>
using namespace std;
int main()
{
float a, s{};
bool p{};
while((p = static_cast<bool>(std::cin >> a)) && a!=0) s+=a;
std::cout << "a = " << a << "\tsum = " << s << '\n';
if(!p)
{
std::cout << "Input error. Repeat:> ";
std::cin.clear();
// clear till next possible number:
//while(!std::isspace(std::cin.get()));
// clear till end of string:
//while(std::cin.get() != '\n');
// clear till end of string (variant 2):
//std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
// should be same as previous, but it's not:
std::cin.ignore(std::cin.rdbuf()->in_avail()); // why 0?
// syncronize i. e. drop till next possible number
//std::cin.sync();
std::cin >> a; s+=a;
std::cout << "a = " << a << "\tsum = " << s << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSAKewoJZmxvYXQgYSwgc3t9OwoJCglib29sIHB7fTsKCQoJd2hpbGUoKHAgPSBzdGF0aWNfY2FzdDxib29sPihzdGQ6OmNpbiA+PiBhKSkgJiYgYSE9MCkgcys9YTsKCXN0ZDo6Y291dCA8PCAiYSA9ICIgPDwgYSA8PCAiXHRzdW0gPSAiIDw8IHMgPDwgJ1xuJzsKCQoJaWYoIXApCgl7CgkJc3RkOjpjb3V0IDw8ICJJbnB1dCBlcnJvci4gUmVwZWF0Oj4gIjsKCQkKCQlzdGQ6OmNpbi5jbGVhcigpOwoJCQoJCS8vIGNsZWFyIHRpbGwgbmV4dCBwb3NzaWJsZSBudW1iZXI6CgkJLy93aGlsZSghc3RkOjppc3NwYWNlKHN0ZDo6Y2luLmdldCgpKSk7CgkJCgkJLy8gY2xlYXIgdGlsbCBlbmQgb2Ygc3RyaW5nOgoJCS8vd2hpbGUoc3RkOjpjaW4uZ2V0KCkgIT0gJ1xuJyk7CgkJCgkJLy8gY2xlYXIgdGlsbCBlbmQgb2Ygc3RyaW5nICh2YXJpYW50IDIpOgoJCS8vc3RkOjpjaW4uaWdub3JlKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzdHJlYW1zaXplPjo6bWF4KCksICdcbicpOwoJCgkJLy8gc2hvdWxkIGJlIHNhbWUgYXMgcHJldmlvdXMsIGJ1dCBpdCdzIG5vdDoKCQlzdGQ6OmNpbi5pZ25vcmUoc3RkOjpjaW4ucmRidWYoKS0+aW5fYXZhaWwoKSk7CQkvLyB3aHkgMD8KCQoJCS8vIHN5bmNyb25pemUgaS4gZS4gZHJvcCB0aWxsIG5leHQgcG9zc2libGUgbnVtYmVyICAKCQkvL3N0ZDo6Y2luLnN5bmMoKTsKCQkKCQlzdGQ6OmNpbiA+PiBhOwlzKz1hOwoJCXN0ZDo6Y291dCA8PCAiYSA9ICIgPDwgYSA8PCAiXHRzdW0gPSAiIDw8IHMgPDwgJ1xuJzsKCX0KCQoJcmV0dXJuIDA7Cn0=