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 tableâs 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 userâs 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.