Temperature Table Functions Objectives • Apply structured and...
Temperature Table Functions
• 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.
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 table should show grid lines (use dashes and vertical lines to box-in the table entries).
• 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
You must create and use the following functions:
• displayMenu( ) to display the menu.
• getMenuSelection ( ) to get 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( ) to get the start, end and increment values for the table from the user.
• CtoF( )to convert two Celsius temperatures to Fahrenheit (using “pass-by-reference” techniques).
• FtoC( )to convert two Fahrenheit temperatures to Celsius (using “pass-by-reference” techniques).
• displayCtoFTable( ) to display a C to F table, given start, end and increment values.
• displayFtoCTable( )to display an F to C table, given start, end and increment values.
• Use a switch statement to respond to the user’s menu selection.
• Display an “Invalid Selection” error message and ask again if the user enters an invalid character for the menu selection.
• 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).
Implementation Notes: How to print the degree symbol
Standard ASCII codes are 7 bits and do not include the degree symbol, but Extended ASCII is an 8-bit print-code whose first 128 codes (those beginning with a zero) are standard ASCII and the second 128 (those beginning with a ONE) extends the printable characters to a variety of non-standard characters, include the degree symbol. The problem is that since the extended character set is not standard, the code assigned to the degree symbol may vary from one compiler to the next, so how do you know what code to use on your compiler?
An easy way is to write a loop that goes through each of the non-standard codes (128 to 255) and output each value as char, but this presents a problem with most compilers since they interpret chars as 8-bit signed integers, i.e., 8-bit two’s complement. You should recall that the range of 8-bit signed integers is -128 to +127, so 128 to 255 are out of bounds. The way to get around this problem is to make the variable’s data type unsigned char (an 8-bit unsigned integer, therefore having a range of 0 to 255), then static cast it to char when printing it with cout.
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:
1. Menu test cases should include all possible valid menu selections and at least one invalid menu selection.
2. 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 C = 32.0 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 F = -45.6 degrees C).
2.5. Some common, easy to verify conversions, for example
2.5.1. 0 degrees C = 32.0 degrees F (and vice versa)
2.5.2. 100 degrees C = 212.0 degrees F (and vice versa)
2.5.3. -40, the only temperature that is the same in both.
Given these categories, the table on the next page lists specific input values to use for your report’s test plan. But remember, you should always test your programs more thoroughly than the minimal set of test cases required for your report. Make sure everything works correctly before submitting. Note that the following test case table only specifies the inputs for the test cases, you must predict and document what the output will be, including the calculated values for each row of the temperature tables produced.
Input Start Temperature Stop Temperature
1 c 0 100 20
2 C 1234 1236 1
3 f -40 20 30
4 F -50 -40 10
5 q ----- ----- -----
6 Q ----- ----- -----
7 a ----- ----- -----
Your report must include the following in the order given:
1. Source code
2. Filled in test plan table as shown above, including predicted output.
3. Printout of actual output for the test cases in the test plan table (each test case clearly labeled).