程序在第二个cin之前进入while循环

时间:2017-10-25 16:30:46

标签: c++ while-loop cin

我在C ++中的while循环之前遇到了2个cins的问题。我希望他们两者都只取大于0的数字。问题是如果我给r一个不是数字的值,这就是:

int r;
int h;
cout << "Radius: ";
cin >> r;
cout << "Height: ";
cin >> h;
while (cin.fail() || !(r > 0) || !(h > 0)) {
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    if (!(r > 0)) {
        cout << "Wrong radius. Input a number bigger than 0.\nRadius: ";
        cin >> r;
    }
    else {
        cout << "Wrong height. Input a number bigger than 0.\nHeight: ";
        cin >> h;
    }

(它不会在循环之前询问h的值)。对于负数,它很好,如果我将半径设为-1,程序将无法在获得高度值之前循环。

这是我的代码:

{{1}}

0 个答案:

没有答案