/* Program 7.2.2 from C++ Programming Lecture notes  */

/* Author: Rob Miller and William Knottenbelt
   Program last changed: 30th September 2001    */

/* This program tests the function 'ChangeToUpperCase'. */ 

#include <iostream>
using namespace std;

const int MAXIMUM_LENGTH = 80;

/* Function to convert a string to all upper case. */
void ChangeToUpperCase(char *phrase);

/* Function returns "True" if argument is a lower case letter. */
int LowerCase(char character);

/* Function to convert a lower case letter to an upper case letter. */
void ChangeToUpperCase(char &character);

/* START OF MAIN PROGRAM */
int main()
{
	char a_string[MAXIMUM_LENGTH];

	cout << "Enter string (maximum length "	<< MAXIMUM_LENGTH - 1 << " characters):\n";
	cin.getline(a_string,MAXIMUM_LENGTH);
	
	ChangeToUpperCase(a_string);
	cout << a_string << "\n";
	 
	return 0;
}
/* END OF MAIN PROGRAM */

/* START OF DEFINITION OF STRING FUNCTION ChangeToUpperCase,
   using pointer arithmetic */
void ChangeToUpperCase(char *phrase)
{
	while (*phrase != '\0')
	{
		if (LowerCase(*phrase))
			ChangeToUpperCase(*phrase);
		phrase++;
	}
}
/* END OF FUNCTION DEFINITION */

/* START OF DEFINITION OF FUNCTION LowerCase */
int LowerCase(char character)
{
	return (character >= 'a' && character <= 'z');
}
/* END OF FUNCTION DEFINITION */

/* START OF DEFINITION OF CHARACTER FUNCTION ChangeToUpperCase */
void ChangeToUpperCase(char &character)
{
	character += 'A' - 'a';
}
/* END OF FUNCTION DEFINITION */

