1: //two_flags.cpp
2: //Tests whether either of two conditions is satisfied. Illustrates a
3: //loop controlled by two flags (two conditions). Note that when such
4: //a loop ends it may be because either (or perhaps both) of the two
5: //conditions failed.
7: #include <iostream>
8: using namespace std;
10: int main()
11: {
12: cout << "\nThis program tries to get the user to enter an integer "
13: "from 1 to 3.\nHowever, only three tries are permitted before "
14: "the program gives up and quits.\n\n";
16: bool validEntry = false; //Since there are no entries yet
17: bool outOfTries = false; //Since no tries have been made yet
19: int i;
20: int tryCount = 0;
22: while (!validEntry && !outOfTries)
23: {
24: cout << "Enter an integer in the range 1..3: ";
25: cin >> i;
26: cout << endl;
27: tryCount++;
28: validEntry = (i >= 1 && i <= 3);
29: outOfTries = (tryCount == 3);
30: if (!validEntry && !outOfTries)
31: cout << "Invalid entry. Try again.\n";
32: }
34: if (validEntry)
35: cout << "The valid entry " << i
36: << " was entered on try #" << tryCount << ".\n";
37: else if (outOfTries)
38: cout << "You ran out of tries!\n";
39: cout << endl;
40: }