// average3.cpp
//
// Averages a sequence of integers entered interactively,
// asking user to indicate in advance the number of 
// numbers to be averaged.
//
// Demonstrates count-controlled _while_ loop.
// Demonstrates increment and assignment operators.
// Demonstrates use of a variable local to a loop.
//
// Prevents division by zero.
// Quits in a user-friendly fashion if the user
// enters a non-number.  (Checks error state of cin.)

#include <iostream>

using namespace std;

int main()
{
   // Announce purpose of program, and explain how to use it:
   cout << "This program averages a sequence of integers";
   cout << " entered interactively." << endl;

   // Determine how many numbers will be averaged:
   cout << "How many numbers do you want to average?> ";
   int numberOfNumbers;

   // Error-check length of sequence,
   // which must be both a number and positive:
   cin >> numberOfNumbers;
   if ( !cin )  {
      cout << "You must enter integers only." << endl;
      return 1;
   }  // if
   if ( numberOfNumbers <= 0 )  {
      cout << "The number of numbers, " << numberOfNumbers
             << ", is invalid.  Must be > 0." << endl;
      return 1;
   }  // if

   // Calculate cumulative sum of numbers entered:

   int sum = 0;        // cumulative sum
   int count = 0;      // count of numbers entered

   cout << "Enter the numbers:> ";

   while ( count < numberOfNumbers )
   {
      // Read current input number:
      int number;
      cin >> number;
      if ( !cin )  {
         cout << "You must enter integers only." << endl;
         return 1;
      }  // if

      // Add number to cumulative sum:
      sum += number;

      // Count loop iterations:
      count++;
   }  // while

   // Compute the average:
   float average = (float) sum / numberOfNumbers;

   // Output the result:
   cout << "The average is " << average << "." << endl;

   return 0;
}  // function main