関数 require() のループは、a > b または "a" または "b" が数字ではないという 3 つの条件を取ります。条件を満たさずに整数を2つ入れてもまたループするだけです。
また、文字を入力すると、cinsを無視して「最小数を入力して最大数を入力」が無限にループします。理由を知っている人はいますか?私は初心者なので、これはおそらく本当に明白です
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
int random(int minN, int maxN) //generates random number within specified range
{
srand (time(NULL));
int x = (maxN - minN);
int y = minN + (rand() % (x+1));
return y;
}
int require() //makes sure a < b and both are digits
{
int a,b;
do {
cout << "Enter minimum number" << endl;
cin >> a;
cout << "Enter maximum number. Note: Has to be greater or equal to minimum." << endl;
cin >> b;
} while (a > b || !isdigit(a) || !isdigit(b));
return random(a,b);
}
int main()
{
cout << require() << endl;
}