Code Snippets

  

C++ Source Code


Welcome to Dream.In.Code
Become a C++ Expert!

Join 137,218 C++ Programmers for FREE! Get instant access to thousands of C++ experts, tutorials, code snippets, and more! There are 2,226 people online right now. Registration is fast and FREE... Join Now!





C++ Temperature Converter

A C++ class to convert temperatures between Kelvin, Celsius, Fahrenheit and Rankine.

Submitted By: sensui
Actions:
Rating:
Views: 365

Language: C++

Last Modified: August 29, 2008

Snippet


  1. //temperatureConverter.cpp
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class TemperatureConverter {
  6.   public:
  7.     enum TemperatureUnit { Kelvin, Celsius, Fahrenheit, Rankine};
  8.   private:
  9.     double kelvin;
  10.     double convertToKelvin( double temp, TemperatureUnit unit = Kelvin );
  11.     double convertFromKelvin( double temp, TemperatureUnit unit = Kelvin );
  12.   public:
  13.     explicit TemperatureConverter( double temp = 0, TemperatureUnit unit = Kelvin );
  14.     void setTemperature( double temp, TemperatureUnit unit = Kelvin );
  15.     double getTemperature( TemperatureUnit unit = Kelvin );
  16.     ~TemperatureConverter();
  17. };
  18.  
  19. double TemperatureConverter::convertToKelvin( double temp, TemperatureUnit unit ) {
  20.   double returnValue;
  21.   switch( unit ) {
  22.     case Kelvin:
  23.       returnValue = temp;
  24.       break;
  25.     case Celsius:
  26.       returnValue = temp + 273.15;
  27.       break;
  28.     case Fahrenheit:
  29.       returnValue = ( temp + 459.67 ) * 5 / 9;
  30.       break;
  31.     case Rankine:
  32.       returnValue = temp * 5 / 9;
  33.       break;
  34.   }
  35.   return returnValue;
  36. }
  37.  
  38. double TemperatureConverter::convertFromKelvin( double temp, TemperatureUnit unit ) {
  39.   double returnValue;
  40.   switch( unit ) {
  41.     case Kelvin:
  42.       returnValue = temp;
  43.       break;
  44.     case Celsius:
  45.       returnValue = temp - 273.15;
  46.       break;
  47.     case Fahrenheit:
  48.       returnValue = temp * 9 / 5 - 459.67;
  49.       break;
  50.     case Rankine:
  51.       returnValue = temp * 9 / 5;
  52.       break;
  53.   }
  54.   return returnValue;
  55. }
  56.  
  57. TemperatureConverter::TemperatureConverter( double temp, TemperatureUnit unit ) {
  58.   kelvin = this->convertToKelvin( temp, unit );
  59. }
  60.  
  61. void TemperatureConverter::setTemperature( double temp, TemperatureUnit unit ) {
  62.   kelvin = this->convertToKelvin( temp, unit );
  63. }
  64.  
  65. double TemperatureConverter::getTemperature( TemperatureUnit unit ) {
  66.   return this->convertFromKelvin( this->kelvin, unit );
  67. }
  68.  
  69. TemperatureConverter::~TemperatureConverter() {
  70. }
  71.  
  72. int main() {
  73.   TemperatureConverter outside, inside( 80.6, TemperatureConverter::Fahrenheit );
  74.   outside.setTemperature( 30, TemperatureConverter::Celsius );
  75.  
  76.   cout << "outside: ( in Kelvin )     " << outside.getTemperature( TemperatureConverter::Kelvin ) << endl;
  77.   cout << "outside: ( in Celsius )    " << outside.getTemperature( TemperatureConverter::Celsius ) << endl;
  78.   cout << "outside: ( in Fahrenheit ) " << outside.getTemperature( TemperatureConverter::Fahrenheit ) << endl;
  79.   cout << "outside: ( in Rankine )    " << outside.getTemperature( TemperatureConverter::Rankine ) << endl;
  80.  
  81.   cout << "inside: ( in Kelvin )     " << inside.getTemperature( TemperatureConverter::Kelvin ) << endl;
  82.   cout << "inside: ( in Celsius )    " << inside.getTemperature( TemperatureConverter::Celsius ) << endl;
  83.   cout << "inside: ( in Fahrenheit ) " << inside.getTemperature( TemperatureConverter::Fahrenheit ) << endl;
  84.   cout << "inside: ( in Rankine )    " << inside.getTemperature( TemperatureConverter::Rankine ) << endl;
  85.  
  86.  
  87.   return EXIT_SUCCESS;
  88. }
  89.  

Copy & Paste


Comments


There are currently no comments for this snippet. Be the first to comment!

Add comment


You must be registered and logged on to </dream.in.code> to leave comments.





Live C++ Help!

C++ Tutorials

Reference Sheets

C++ Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month