Practice Exercise: Programmer-Defined Functions--Value Returning Purpose and Objective: To enhance readability by reducing the complexity of the function main, it is useful to be able to create and invoke a function. The general form or syntax for a function is: functionType functionName ( [formal parameter list] ) { statements [return expr;] } The syntax for a function call is: [variable =] functionName([arguments--aka "actual parameter list"]); The syntax for the formal parameter list is: dataType identifier [, dataType identifier, ...] The syntax for the argument(s) or actual parameter list is: expression or variable[, expression or variable, ...] return Statement syntax: return expr; where expr is a variable, constant or expression. Function Prototype: A function heading without a body. An identifier must be declared before it is referenced, hence a function, or prototype must be placed prior to invoking the function. The syntax for a function prototype is: functionType functionName(parameter list); 1. Define a value-returning char function named getChoice to have no formal parameters, and to print a menu of choices for a phone plan user such as: Regular Plan ('r') Minute Plan ('m') It should do console input and return a lower case char value for planChoice. (For the predefined function tolower(ch), include the header file cctype.) 2. Call the function named getChoice( ) passing no actual parameters (arguments) and assign the character value returned to a variable local to the calling function. 3. Prompt and input an int value for minutes used. 4. Define a value-returning function named getMinutesCharge( ). Its parameter list is to have a char parameter for plan choice, and an int for minutes. The statement body is to compute and return the double value for minutes charge from the product of billableMinutes (no charge for the first 300 minutes by regular plan holders) and costPerMinute (0.10 for regular and 0.15 for minute plan). 5. Invoke getChoice( ), getMinutes( ), and getMinutesCharge( ). Assign the values returned to related local variables. 6. Print a description for plan choice (test to choose "regular" or "minute"), minutes used, minutesCharge, and monthlyCharge--the sum of minutesCharge and baseCharge($25.00 for regular plan; $0.00 for minute plan).