//  When things go wrong at program execution, often 
//  the cause is improper input to a stream, causing 
//  input failure. Reading a letter, or other character, 
//  into an int or double is an example of this type 
//  of error, and will result in the input stream being 
//  in an unusable or fail state. Once this happens, 
//  further input from this stream is ignored. To 
//  correct this state and bring the stream back online, 
//  cin.clear() is used. Your code will look like this:

	cin.clear();

//  Since cin.clear() is not very useful on its own, an 
//  exampke is shown of clearing input after a line of 
//  input is read and processed, but before the next, so
//  any extraneous characters are cleared from the buffer 
//  routinely.

	cin >> age >> weight >> height;

	bmi = calculate_bmi(age, weight, height);
	print_bmi_info(age, weight, height, bmi);

	cin.clear();

	cin.ignore(100, '\n');

//  Now, assuming your user is fallible, every so often
//  he or she will enter a character in place of a number, 
//  or perhaps an extra number during program execution. 
//  Assumking that the above code segment is contained in 
//  a repetitive structure, the next set of inputs will not 
//  suffer from the retained problems of the invalid set 
//  because the buffer will be flushed and reinitialized 
//  by the clear and ignore functions.