SOURCE FILE: activ2.cpp


//******************************************************************
// Activity program
// This program inputs any number of temperature values and, for
// each temperature, outputs an appropriate activity
//******************************************************************
#include <iostream>

using namespace std;

void GetTemp( int& );
void PrintActivity( int );

int main()
{
    int temperature;	// The outside temperature

    GetTemp(temperature);
    while (cin)			    // While not EOF...
    {
	PrintActivity(temperature);
	GetTemp(temperature);
    }
    return 0;
}

//******************************************************************

void GetTemp( /* out */ int& temp )

// This function prompts for a temperature to be entered, reads
// the input value, checks to be sure it is in a valid temperature
// range, and echo-prints it

// Postcondition:
//     User has been prompted for a temperature value (temp)
//  && Error messages and additional prompts have been printed
//     in response to invalid data
//  && IF no valid data was encountered before EOF
//	   Value of temp is undefined
//     ELSE
//	   -50 <= temp <= 130  &&  temp has been printed

{
    cout << "Enter the outside temperature (-50 through 130): ";
    cin >> temp;
    while (cin &&			     // While not EOF and
	   (temp < -50 || temp > 130))	     //	  temp is invalid...
    {
	cout << "Temperature must be"
	     << " -50 through 130." << endl;
	cout << "Enter the outside temperature: ";
	cin >> temp;
    }
    if (cin)				     // If not EOF...
	cout << "The current temperature is "
	     << temp << endl;
}

//******************************************************************

void PrintActivity( int temp )

// Given the value of temp, this function prints a message
// indicating an appropriate activity

{
    cout << "The recommended activity is ";
    if (temp > 85)
	cout << "swimming." << endl;
    else if (temp > 70)
	cout << "tennis." << endl;
    else if (temp > 32)
	cout << "golf." << endl;
    else if (temp > 0)
	cout << "skiing." << endl;
    else
	cout << "dancing." << endl;
}