CSci 151                   Assignment 6: Strings                     Spring 2015
 
                       
Develop a C++ program to input, process and output character strings according 
   to the specifications and constraints below. Use your leoMail username as the
   source file name(e.g. gPolya.cpp). Attach that source file to an email sent 
   to tom.brown at the domain named tamuc.edu on or before the end of Friday 17
   April. The email "subject" is to include our course code (151), your leoMail
   name without the domain name, and the assignment number.

Steps:
1. Output a descriptive program heading line.
2. Input: get an email address: prompt the user to enter strings for an email
   userName (i.e firstName "dot" lastName), and for a domain name (i.e. 
   organization "dot" domain class). Example inputs: george.polya, and 
   idaho.edu. 
3. Processing:
   a. Assign to a string named emailAddress the value from an expression that 
      concatenates the value of userName with the '@' sign, and that string 
      concatenated to the variable domainName. Example result: 
      george.polya@idaho.edu
   b. Get edited name:
      1) locate the "dot" delimiter in emailAddress and extract name substrings:
         assign to an int named dotPlace the value returned as a result of the
         object userName calling find() to locate the dot(".") between the 
         first name and last name substrings. 
      2) have userName invoke substr() to extract the first name, then invoke
         substr() again to extract last name with those return values assigned
         to firstName and lastName respectively.
      3) change the case of firstName and lastName to "initCap": process 
         firstName and lastName to ensure their first letters are in uppercase
         and trailing letters are set to lower case (called "initCap" format).
         Example: George Polya
      4) create an edited name composed of the concatenation of last name, a 
         comma and space(, ) and first name. Example Polya, George
4. Outputs:
   a. A descriptive program heading line;
   b. Prompts for userName and domainName;
   c. "Echoed" input values for userName and domainName and their respective 
      lengths(e.g. userName: george.polya length 12; domainName: idaho.edu 
      length 9). Length of a string is the value returned when a string object
      invokes length();
   d. The concatenated emailAddress returned from getEmailAddress() and the 
      emailLength (e.g. emailAddress: george.polya@idaho.edu, length: 22);
   e. The firstName and lastName values found, extracted, and formatted as
      "initCap"(e.g. firstName: George lastName: Polya)
   f. An edited name, as might be listed in an address book, that is composed of 
      the values for lastName and firstName with first letters capitalized, and 
      with a comma and a space concatenated between them. Example: Polya, George. 
   *  Include side labels for outputs specified in steps 4c-f.

Style and design constraints:
1. Place a comment at the top of your source program with the program file
   name, the class code (151), and the assignment number.
2. Use descriptive names, conventional notation when naming identifiers, 
   and initialize them according to data type and expected value. Indent 
   and align statements for readability.
3. Create and invoke programmer-defined functions to:
   a) get the email address, and 
   b) format the edited name. 
4. Invoke built-in string functions length(), find(), and substr() as needed.
5. Incorporate an event-controlled loop to allow the application user to repeat
   the input, processing and output until there is a signal to exit.