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



In the previous parts, you learned to use a while loop with fix number of loops and then with variable number of loops.  In both cases, you used a counting mechanism to stop the looping.  There are times that you want to use a condition to stop the looping.  For example, in the previous program, suppose you want to ask the user to see whether he/she wishes to enter a new grade.  For now, we will use an integer to control the looping number.  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.

// P24_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.h>
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 24-1
In program 24_1.cpp, right at the beginning you have initialized the choice to 1.  You did that to get 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 ex24_1.cpp, so that is uses do ... while.  Do not initialize the choice to 1 this time and compile and run the program.  Does the program work the same way?