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: 3560328 • 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:

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;
}

Please rate if I succeeded in helping you.

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