Activity 3-4 - Simple Flow of Control
Event-controlled while and do ... while loops



In the previous parts, you learned to use a while loop with a fixed number of loops and then with variable number of loops.  In both cases, you used a counting mechanism to stop the looping.  We have also used a condition to stop the looping (when we asked the user if he/she wanted to continue or not).  Let us see a different possible solution to that problem and suppose you want to ask the user to see whether he/she wishes to enter a new grade, but now, we will use an integer to control the looping number instead of Y or N.  Here, the user will enter a 1 if he/she wishes to loop one more time and will enter a 0 or any other number to stop the looping.

// P34_1.cpp - Read and average some integers, print the result.
// This program continue asking for a new number until the user enters a 0 to terminate the program
#include <iostream>
using namespace std;
int main(void)
{
        int x;
        int count = 0;   // (1) initialize a counter to 0 to count number of values
        int choice = 1; // This is the choice that controls the looping continuation or termination
        double sum = 0; // initialize the sum to 0 to make sure the sum at the beginning is 0
        double average;

        while( choice = = 1) // (2) read N grades and compute their sum, count ensures N entries
       {
              // read each number and compute the sum:
             cout << "\n Enter a grade <Enter>: ";
             cin >> x;
             sum = sum + x;
             count++;  // (3) update the count
            // prompt the user:
            cout << "Do you wish to enter another grade? (1 for yes and 0 or other key for no): " << endl;
            cin >> choice;
        }

        if(count = = 0)
              cout << "You haven't entered any number. No average will be computed. Bye!\n";
        else{
           average = sum/count;  //Notice that we have divided by count this time
            cout << "The average of these " << count << " grades is " << average <<"." << endl;
        }

        return 0;
}

Exercise 34-1
In P34_1.cpp, right at the beginning, the program initializes choice to 1.  This forces the while loop to run at least once. If you use a do ... while instead, you wouldn't need to initialize the choice.  Re-write the above program, call the new program ex34_1.cpp, so that is uses do ... while.  Do not initialize the choice to 1 this time. Compile and run the program.  Does the program work the same way?