// temperature200.cpp 02/27/2002 cis205 C/C++ Programming // converts temperatures from/to Celsius, Kelvin, and Fahrenheit // version 2.00 // demonstrates passing parameters to functions by value // and returning values from functions // Expectation values: // 0.00 K = -273.15 °C = -459.67 °F // absolute zero // 273.15 K = 0.00 °C = 32.00 °F // freezing point of water // 373.15 K = 100.00 °C = 212.00 °F // boiling point of water // Daniel Fahrenheit (1686-1736) http://www.gi.alaska.edu/ScienceForum/ASF13/1317.html // Anders Celsius (1701-1744) http://www.astro.uu.se/history/Celsius_eng.html // William Kelvin (1824-1907) http://www.infoplease.com/ce6/people/A0827333.html /* Sample Output C:\cis205\2002\spring\examples>temperature200.exe -273.15 C is the same as -459.67 F */ // pre-processor directive #include// prototypes (function skeletons) float convertCtoK(float); // function accepts a float, returns a float float convertKtoC(float); float convertCtoF(float); float convertFtoC(float); float convertKtoF(float); float convertFtoK(float); void explain(void); void display(int, float, float); // function accepts an integer and two floats int main(void) { int intConversionType = 3; // celsius to fahrenheit float fltTemperature = -273.15; // celsius, expect fahrenheit -459.5=67 float fltAnswer; switch(intConversionType) { case 1: // celsius to kelvin fltAnswer = convertCtoK(fltTemperature); break; case 2: // kelvin to celsius fltAnswer = convertKtoC(fltTemperature); break; case 3: // celsius to fahrenheit fltAnswer = convertCtoF(fltTemperature); break; case 4: // fahrenheit to celsius fltAnswer = convertFtoC(fltTemperature); break; case 5: // kelvin to fahrenheit fltAnswer = convertKtoF(fltTemperature); break; case 6: // fahrenheit to kelvin fltAnswer = convertFtoK(fltTemperature); break; } if(fltAnswer != NULL) { display(intConversionType, fltTemperature, fltAnswer); } else { explain(); } return 0; } float convertCtoK(float fltTC) // case 1 { float fltResult; fltResult = fltTC + 273.15f; return fltResult; } float convertKtoC(float fltTK) // case 2 { float fltResult; fltResult = fltTK - 273.15f; return fltResult; } float convertCtoF(float fltTC) // case 3 { float fltResult; fltResult = (fltTC * (9.00f / 5.00f)) + 32.00f; return fltResult; } float convertFtoC(float fltTF) // case 4 { float fltResult; fltResult = (fltTF - 32.00f) * (5.00f / 9.00f); return fltResult; } float convertKtoF(float fltTK) // case 5 { float fltResult; // in one step: fltResult = (convertKtoC(fltTK) * (9.00f / 5.00f)) + 32.00f; // celsius to fahrenheit return fltResult; } float convertFtoK(float fltTF) // case 6 { float fltResult; // in one step fltResult = convertFtoC(fltTF) + 273.15f; // celsius to kelvin return fltResult; } void explain(void) // default case { cout << "Specify a conversion type (1..6) and temperature" << endl; } void display(int fltType, float t1, float t2) { char chrScale1 = ' '; char chrScale2 = ' '; switch(fltType) { case 1: // celsius to kelvin chrScale1 = 'C'; chrScale2 = 'K'; break; case 2: // kelvin to celsius chrScale1 = 'K'; chrScale2 = 'C'; break; case 3: // celsius to fahrenheit chrScale1 = 'C'; chrScale2 = 'F'; break; case 4: // fahrenheit to celsius chrScale1 = 'F'; chrScale2 = 'C'; break; case 5: // kelvin to fahrenheit chrScale1 = 'K'; chrScale2 = 'F'; break; case 6: // fahrenheit to kelvin chrScale1 = 'F'; chrScale2 = 'K'; break; } cout.precision(2); cout.setf(ios::fixed | ios::showpoint); cout << t1 << " " << chrScale1 << " is the same as " << t2 << " " << chrScale2 << endl; }