Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Problem Description This program is to give the user the option of converting a

ID: 3627702 • Letter: P

Question

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.

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;

Explanation / Answer

#include <iostream>
#include <string>
#include <stdlib.h>
#include <iomanip>
using namespace std;

// functions prototype
void displayMenu();
char getMenuSelection();
void getStartEndAndIncrement(int&, int&, int&);
double CtoF(double);
double FtoC(double);
void displayTable(char, int, int, int);

// display the main menu
void displayMenu()
{
          cout << "Welcome to the temperatures convertor program" << endl;
          cout << "Please select one of the following options: " << endl;
          cout << "(F/f) From Fahrenheit to Celsius" << endl;
          cout << "(C/c) From Celsius to Fahrenheit" << endl;
          cout << "(Q/q) Exit" << endl;
}

// get the menu selection from the user
// return the option
// f...... F to C
// c...... C to F
// q...... Quit
char getMenuSelection()
{
          char selection = '';

          cout << "Please select an option: ";
          cin >> selection;

          while (tolower(selection) != 'f' && tolower(selection) != 'c' && tolower(selection) != 'q')
          {
                   cout << "-- Invalid selection: try again --" << endl;
                   cout << endl;
                   //re-prompt the menu
                   displayMenu();
                   cout << "Please select an option: ";
                   cin >> selection;
                   // clear the ' ' after the user hits enter
                   cin.clear();
          }
          return selection;
}

// gets the start, end and increment values
// NOTE: since we are not allowed to use global variables, I guess passing by reference instead here
void getStartEndAndIncrement(int& start, int& end, int& increment)
{
          cout << "Enter 3 integers: starting temperature, ending temperature, and an increment" << endl;
          string tmpStart = "", tmpEnd = "", tmpIncre = "";

          // check if the number user enters is a digit
          cout << "starting temperature: ";
          cin >> tmpStart;
          cin.clear();
          while (atoi(tmpStart.c_str()) == 0)
          {
                   cout << "-- Invalid starting temperature -- " << endl;
                   cout << endl;
                   cout << "reenter again: ";
                   cin >> tmpStart;
                   cin.clear();
          }

    cout << "ending temperature: ";
    cin >> tmpEnd;
          cin.clear();
    while (atoi(tmpEnd.c_str()) == 0)
    {
        cout << "-- Invalid ending temperature -- " << endl;
        cout << endl;
        cout << "reenter again: ";
        cin >> tmpEnd;
                   cin.clear();
    }

    cout << "increment: ";
    cin >> tmpIncre;
          cin.clear();
    while (atoi(tmpIncre.c_str()) == 0)
    {
        cout << "-- Invalid increment value -- " << endl;
        cout << endl;
        cout << "reenter again: ";
        cin >> tmpIncre;
                   cin.clear();
    }

          start = atoi(tmpStart.c_str());
          end = atoi(tmpEnd.c_str());
          increment = atoi(tmpIncre.c_str());
}

// converts a celsius temperature to Fahrenheit
double CtoF(double celsius)
{
          return (9.0/5.0)*celsius + 32;
}

// converts a Fahrenheit temperature to celsius
double FtoC(double fahrenheit)
{
          return (5.0/9.0)*(fahrenheit-32);
}

// displays a C to F or F to C table given start, end and increment values, and the
// conversion character the user selected
void displayTable(char option, int startTemp, int endTemp, int increment)
{
          cout << "------------------------------" << endl;
          cout << setiosflags(ios::right);
          cout << setiosflags(ios::fixed);

          // convert from C to F
          if (option == 'c')
          {
                   cout << setw(6) << "C" << (char)248 << setw(8) << "F" << (char)248 << endl;
                   while (endTemp > startTemp)
                   {
                             cout << setw(8) << startTemp << setw(8) << setprecision(1) << CtoF(startTemp) << endl;
                             startTemp += increment;
                   }
                   // output the endTemp
                   if (startTemp != endTemp)
                             cout << setw(8) << endTemp << setw(8) << setprecision(1) << CtoF(endTemp) << endl;
          }
          else // convert from F to C
          {
                   cout << setw(6) << "F" << (char)248 << setw(8) << "C" << (char)248 << endl;
                   while (endTemp > startTemp)
                   {
                             cout << setw(8) << startTemp << setw(8) << setprecision(1) << FtoC(startTemp) << endl;
                             startTemp += increment;
                   }
                   // output the endTemp
                   if (startTemp != endTemp)
                             cout << setw(8) << endTemp << setw(8) << setprecision(1) << FtoC(endTemp) << endl;
          }
}

int main()
{
          char usrSelection = '';
          int startTemp = 0;
          int endTemp = 0;
          int increment = 0;

          displayMenu();
          usrSelection = getMenuSelection();

          // as long as the user doesn't quit
          while (usrSelection != 'q')
          {
                   getStartEndAndIncrement(startTemp, endTemp, increment);
                   displayTable(usrSelection, startTemp, endTemp, increment);
                   cout << endl;
                   displayMenu();
                   usrSelection = getMenuSelection();
          }
          return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote