Sunteți pe pagina 1din 2

//temperatureConverter.

cpp
#include <iostream>
using namespace std;

class TemperatureConverter {
public:
enum TemperatureUnit { Kelvin, Celsius, Fahrenheit, Rankine};
private:
double kelvin;
double convertToKelvin( double temp, TemperatureUnit unit = Kelvin );
double convertFromKelvin( double temp, TemperatureUnit unit = Kelvin );
public:
explicit TemperatureConverter( double temp = 0, TemperatureUnit unit =
Kelvin );
void setTemperature( double temp, TemperatureUnit unit = Kelvin );
double getTemperature( TemperatureUnit unit = Kelvin );
~TemperatureConverter();
};

double TemperatureConverter::convertToKelvin( double temp, TemperatureUnit unit )


{
double returnValue;
switch( unit ) {
case Kelvin:
returnValue = temp;
break;
case Celsius:
returnValue = temp + 273.15;
break;
case Fahrenheit:
returnValue = ( temp + 459.67 ) * 5 / 9;
break;
case Rankine:
returnValue = temp * 5 / 9;
break;
}
return returnValue;
}

double TemperatureConverter::convertFromKelvin( double temp, TemperatureUnit


unit ) {
double returnValue;
switch( unit ) {
case Kelvin:
returnValue = temp;
break;
case Celsius:
returnValue = temp - 273.15;
break;
case Fahrenheit:
returnValue = temp * 9 / 5 - 459.67;
break;
case Rankine:
returnValue = temp * 9 / 5;
break;
}
return returnValue;
}
TemperatureConverter::TemperatureConverter( double temp, TemperatureUnit unit ) {
kelvin = this->convertToKelvin( temp, unit );
}

void TemperatureConverter::setTemperature( double temp, TemperatureUnit unit ) {


kelvin = this->convertToKelvin( temp, unit );
}

double TemperatureConverter::getTemperature( TemperatureUnit unit ) {


return this->convertFromKelvin( this->kelvin, unit );
}

TemperatureConverter::~TemperatureConverter() {
}

int main() {
TemperatureConverter outside, inside( 80.6, TemperatureConverter::Fahrenheit );
outside.setTemperature( 30, TemperatureConverter::Celsius );

cout << "outside: ( in Kelvin ) " <<


outside.getTemperature( TemperatureConverter::Kelvin ) << endl;
cout << "outside: ( in Celsius ) " <<
outside.getTemperature( TemperatureConverter::Celsius ) << endl;
cout << "outside: ( in Fahrenheit ) " <<
outside.getTemperature( TemperatureConverter::Fahrenheit ) << endl;
cout << "outside: ( in Rankine ) " <<
outside.getTemperature( TemperatureConverter::Rankine ) << endl;

cout << "inside: ( in Kelvin ) " <<


inside.getTemperature( TemperatureConverter::Kelvin ) << endl;
cout << "inside: ( in Celsius ) " <<
inside.getTemperature( TemperatureConverter::Celsius ) << endl;
cout << "inside: ( in Fahrenheit ) " <<
inside.getTemperature( TemperatureConverter::Fahrenheit ) << endl;
cout << "inside: ( in Rankine ) " <<
inside.getTemperature( TemperatureConverter::Rankine ) << endl;

return EXIT_SUCCESS;
}

S-ar putea să vă placă și