Source of say_hi4.cpp


  1: //say_hi4.cpp
  2: //Displays a greeting to an individual, using his or her
  3: //initials, and (possibly) indented from the left margin.

  5: #include <iostream>
  6: #include <iomanip>
  7: using namespace std;


 10: void DescribeProgram();
 11: void GetPosition(int& column);
 12: void GetInitials(char& firstChar, char& lastChar);
 13: void DisplayGreeting(int column, char firstChar, char lastChar);


 16: int main()
 17: {
 18:     int column;
 19:     char firstChar;
 20:     char lastChar;

 22:     DescribeProgram();

 24:     GetPosition(column);
 25:     GetInitials(firstChar, lastChar);

 27:     DisplayGreeting(column, firstChar, lastChar);

 29:     cout << endl;
 30: }


 33: void DescribeProgram()
 34: //Pre:  The cursor is at the left margin.
 35: //Post: The program description has been displayed,
 36: //      preceded and followed by at least one blank line.
 37: {
 38:     cout << "\nThis program displays a greeting to some individual, "
 39:         "using his or her initials\nand positioned at a location on "
 40:         "the output line chosen by the user.\n\n";
 41: }


 44: void GetPosition(/* out */ int& column)
 45: //Pre:  none
 46: //Post: "column" contains an integer from 1 to 68 (inclusive)
 47: //      entered by the user, and the input line has been cleared.
 48: {
 49:     cout << "Enter column (1 to 68) where greeting is to start: ";
 50:     cin >> column;  cin.ignore(80, '\n');  cout << endl;
 51: }



 55: void GetInitials(/* out */ char& firstChar, /* out */ char& lastChar)
 56: //Pre:  none
 57: //Post: "firstChar" and "lastChar" each contain a capital letter
 58: //      entered by the user, and the input line has been cleared.
 59: {
 60:     cout << "Enter the (capital) initials of the person to greet: ";
 61:     cin >> firstChar >> lastChar;  cin.ignore(80, '\n');  cout << endl;
 62: }


 65: void DisplayGreeting(/* in */ int column,
 66:                      /* in */ char firstChar,
 67:                      /* in */ char lastChar)
 68: //Pre:  "column", "firstChar" and "lastChar" have been initialized, with
 69: //      1<=column<=68, 'A'<=firstChar<='Z', and 'A'<=lastChar<='Z'.
 70: //Post: A greeting has been displayed, using the initials in
 71: //      "firstChar" and "lastChar", starting in position "column",
 72: //      and preceded and followed by at least one blank line.
 73: {
 74:     cout << endl;
 75:     cout << setw(column-1) << ""
 76:          << "Hi there, " << firstChar << lastChar << "!\n\n";
 77: }