/* This program converts a temperature between the Fahrenheit,
   Celsius, and Kelvin scales.

   Input:  A temperature (double) value
   Output: A menu of conversion choices
   Input:  The desired (char) conversion
   Output: The converted value
------------------------------------------------------------------*/

#include <iostream.h>

double Convert(double, char);

int main(void)
{
   const char
      Menu[] = "\nPlease enter:\n"
               "\tA - to convert Fahrenheit to Celsius.\n"
               "\tB - to convert Celsius to Fahrenheit.\n"
               "\tC - to convert Fahrenheit to Kelvin.\n"
               "\tD - to convert Kelvin to Fahrenheit.\n"
               "\tE - to convert Kelvin to Celsius.\n"
               "\tF - to convert Celsius to Kelvin.\n\n"
               "Your Choice ? ";

  cout << "\nThis program converts a temperature between the scales\n"
       << "\tFahrenheit, Celsius, and Kelvin.\n";

  double
     InTemp;

  cout << "\nPlease enter the temperature you wish to convert: ";
  cin >> InTemp;

  char
     Conversion;

  cout << Menu;
  cin >> Conversion;

  double
     OutTemp = Convert(InTemp, Conversion);

  cout << "\n--> The converted temperature is " << OutTemp << ".\n\n";

  return 0;
}

/*-------------------------------------------------------------
Convert converts a given Temperature from one scale to another,
   according to the value of Conversion.

   Receive: Temperature, Conversion
   Return:  The equivalent Temperature in the other scale
---------------------------------------------------------------*/

#include "Heat.h"         // library of temperature-
                          //    conversion functions

double Convert(double Temperature, char Conversion)
{
   switch (Conversion)
   {
      case 'a': case 'A':
                          return FahrToCelsius(Temperature);
      case 'b': case 'B':
                          return CelsiusToFahr(Temperature);
      case 'c': case 'C':
                          return FahrToKelvin(Temperature);
      case 'd': case 'D':
                          return KelvinToFahr(Temperature);
      case 'e': case 'E':
                          return KelvinToCelsius(Temperature);
      case 'f': case 'F':
                          return CelsiusToKelvin(Temperature);
      default:
                          cerr << "\n*** Error: Illegal conversion: "
                               << Conversion
                               << " detected in function Convert.\n";
   }
   return 0.0;   // default value in case of error
}

