This is the problem I\'m working on: Problem Description This program is to give
ID: 3637879 • Letter: T
Question
This is the problem I'm working on: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 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
Function Requirements
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.
Additional Requirements
• 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.
This is what I have so far, but I can’t get it to work:
#include <iostream>
#include <iomanip>
// Sets the max size of table
#define MAX_WIDTH 5
using namespace std;
// Functions prototype
void displayRtoCTable(int, int, int);
void displayCtoFTable(int, int, int);
void getStartEndAndIncrement(int&, int&, int&);
char getMenuSelection(void);
double CtoF(int);
double FtoC(int);
// Displays the main menu
void displayMenu(void);
int main()
{
// Not currently used.
double C, F;
int start, end, increment;
bool cont = true;
while (cont)
{
// Call for the menu function.
displayMenu();
// Case based on menu selection
switch (getMenuSelection())
{
// Conversion from Celsius to Fahrenheit.
case 'C':
case 'c':
getStartEndAndIncrement(start, end, increment);
displayCtoFTable(start, end, increment);
break;
case 'f':
case 'F':
getStartEndAndIncrement(start, end, increment);
case 'q':
case 'Q':
cont = false;
break;
//output error message
default :
break;
}
}
cin.ignore(2);
return 0;
}
// Main menu function
void displayMenu(void)
{
cout << "Welcome to the Temperature conversion Program" << endl;
cout << "Please select one of the following options: " << endl;
cout << "C. From Fahrenheit to Celsius" << endl;
cout << "F. From Celsius to Fahrenheit" << endl;
cout << "Q. Exit" << endl;
}
char getMenuSelection(void)
{
char selection;
cout << " Enter your selection: ";
cin >> selection;
return selection;
}
void getStartEndAndIncrement(int& start, int& end, int& increment)
{
cout << "Enter 3 integers: starting temperature, ending temperature, and an increment" << endl;
cin >> start >> end >> increment;
}
double CtoF(int C)
{
double F;
F = (9*C)/5+32;
return F;
}
double FtoC(int F)
{
double y;
y = (5.0 * (F - 32)/9.0);
return y;
}
void displayCtoFTable(int start, int end, int increment)
{ double F;
cout << " C F ";
for (int i = start; i <= end; i += increment)
{
CtoF(start);
cout << start;
}
}
Help would be greatly appreciated here.
Explanation / Answer
please rate - thanks
message me if any problems
#include <iostream>
#include <iomanip>
// Sets the max size of table
#define MAX_WIDTH 5
using namespace std;
// Functions prototype
void displayFtoCTable(int, int, int);
void displayCtoFTable(int, int, int);
void getStartEndAndIncrement(int&, int&, int&);
char getMenuSelection(void);
double CtoF(int);
double FtoC(int);
// Displays the main menu
void displayMenu(void);
int main()
{
// Not currently used.
double C, F;
int start, end, increment;
bool cont = true;
while (cont)
{
// Call for the menu function.
displayMenu();
// Case based on menu selection
switch (getMenuSelection())
{
// Conversion from Celsius to Fahrenheit.
case 'C':
case 'c':
getStartEndAndIncrement(start, end, increment);
displayCtoFTable(start, end, increment);
system("pause");
break;
case 'f':
case 'F':
getStartEndAndIncrement(start, end, increment);
displayFtoCTable(start, end, increment);
system("pause");
break;
case 'q':
case 'Q':
cont = false;
break;
//output error message
default : cout<<"Invalid entry ";
break;
}
}
//cin.ignore(2);
return 0;
}
// Main menu function
void displayMenu(void)
{
cout << "Welcome to the Temperature conversion Program" << endl;
cout << "Please select one of the following options: " << endl;
cout << "C. From Fahrenheit to Celsius" << endl;
cout << "F. From Celsius to Fahrenheit" << endl;
cout << "Q. Exit" << endl;
}
char getMenuSelection(void)
{
char selection;
cout << " Enter your selection: ";
cin >> selection;
return selection;
}
void getStartEndAndIncrement(int& start, int& end, int& increment)
{
cout << "Enter 3 integers: starting temperature, ending temperature, and an increment" << endl;
cin >> start >> end >> increment;
}
double CtoF(int C)
{
double F;
F = (9.*C)/5.+32.;
return F;
}
double FtoC(int F)
{
double y;
y = (5.0 * (F - 32.)/9.0);
return y;
}
void displayCtoFTable(int start, int end, int increment)
{ double F;
cout<<" |-------|--------| ";
cout << "| "<<(char)248<<"C | "<<(char)248<<"F | ";
for (int i = start; i <= end; i += increment)
{
F=CtoF(i);
cout <<"|"<<right<<setw(5)<<i<<" | "<<setw(5)<<right<<setprecision(1)<<fixed<< F<<" | ";
cout<<"|-------|--------| ";
}
cout<<endl;
}
void displayFtoCTable(int start, int end, int increment)
{ double F;
cout<<" |-------|--------| ";
cout << "| "<<(char)248<<"C | "<<(char)248<<"F | ";
for (int i = start; i <= end; i += increment)
{
F=FtoC(i);
cout <<"|"<<right<<setw(5)<<i<<" | "<<setw(5)<<right<<setprecision(1)<<fixed<< F<<" | ";
cout<<"|-------|--------| ";
}
cout<<endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.