COMP 122 Lab 5 Lab Report and Source Code
COMP122
Week 5 iLab
Objectives
Apply structured and modular design principles to write programs that meet written specifications and requirements. Develop a pseudo-code design using appropriate program structure (sequence, selection, repetition and nesting) to solve a given programming problem. Use appropriate selection and repetition statements to implement the design. Create user-defined functions to implement a modular design. Use appropriate parameter passing mechanisms for passing data into and getting data back from functions. Use ostream and iomanip formatting manipulators to display tabulated data. Design and implement a menu-driven interface.
Problem Description
This program is to give the user the option of converting a set of temperatures either from Celsius to Fahrenheit (C to F) or vice versa, from Fahrenheit to Celsius (F to C), or to quit the program. If the user selects either C to F or F to C, the program will prompt the user to enter three integer values, a starting temperature, an ending temperature, and an increment. After these values have been entered the program will display a table of equivalent C and F (or F and C) temperatures, from the starting temperature to the ending temperature and incrementing by the increment value each row.
The table must meet all of the following criteria:
The tables column headings should display the degree symbol, e.g., °C and °F. The first column must be the from temperature (C for C to F or F for F to C) and the second column the to temperature (F for C to F or C for F to C). The calculated to temperatures are to be displayed to the nearest tenth of a degree (display exactly one decimal place, even if there is no fractional part, i.e., 75° should display as 75.0°). Temperatures in both columns must be number-aligned (right-justified for the integer from values and decimal point aligned right for the to values). Assume the user enters correct data, e.g., the start temperature, end temperature and increment are all integers and the ending temperature is greater than the starting temperature.
The formula to convert Celsius to Fahrenheit is
The formula to convert Fahrenheit to Celsius is
Function Requirements
You must create and use the following functions:
displayMenu( ) displays a menu. getMenuSelection ( ) gets the menu selection from the user, upper or lower case C for Celsius to Fahrenheit, upper or lower case F for Fahrenheit to Celsius, and upper or lower case Q to quit. Any other input should get an error message Invalid selection: try again and re-prompt for the menu selection. getStartEndAndIncrement( ) gets the start, end and increment values for the table from the user. CtoF( ) converts a Celsius temperature to Fahrenheit. FtoC( )converts a Fahrenheit temperatures to Celsius. displayTable( ) displays a C to F or F to C table given start, end and increment values and the conversion character the user selected.
Additional Requirements
Absolutely NO GLOBAL VARIABLES can be used to implement this program! Any program using global variables will NOT be accepted! Use a switch statement to respond to the users menu selection in the getMenuSelection function. After the user selects a valid temperature table option, ask the user to enter start, end, and increment values, then display the table and stop until the user presses the ENTER key to continue (prompt the user, of course). When the user presses ENTER to continue the menu should be redisplayed, allowing the user to make another menu selection (either to display another temperature conversion table or quit). Make sure that your code is properly formatted (indentation, etc) and that you have provided suitable documentation of all your functions (comment blocks for program and functions!).
How to print the degree symbol
It is easy enough to find out how to do this by searching the web. The short answer is:
cout < (char)248;=>
Test Plan
Test cases are generally selected by analyzing the program and determining categories of inputs and outputs, then specifying at least one specific input value (or set of input values) for each category. Inputs for this program include the selection, or menu input, and integer values to generate a table (start temperature, stop temperature and increment value). Here is an outline of the categories:
Menu test cases should include all possible valid menu selections and at least one invalid menu selection. Table test cases should include
2.1. Inputs that create tables with various numbers of rows
2.2. At least one temperature that calculates to an exact whole number of degrees (e.g., 0 degrees degrees F).
2.3. Negative starting and ending temperatures.
2.4. At least one temperature that calculates to a fractional number of degrees (e.g., -50 degrees degrees C).
2.5. Some common, easy to verify conversions, for example
2.5.1. 0 degrees degrees F (and vice versa)
2.5.2. 100 degrees degrees F (and vice versa)
2.5.3. -40, the only temperature that is the same in both.
Given these categories, use the table on the next page to record the specific input values you will use for your test plan. Note that you must predict and document what the output will be for each of your test cases, including the calculated values for each row of the temperature tables produced. Test your program using your selected test cases and record the actual observed output from your test cases by pasting screen shots into your report document. Make sure everything works correctly before submitting.