CS1411 - 160 - Programming Principles I, Spring 2005

Motivation

This weeks you will practice some more functions

Mandatory work

Your TA will check that you have done the following things (you may leave once their done) :

Pass by value vs. pass by reference

You are supposed to write functions to convert between celsius and fahrenheit and vice versa.

The formulas to do this are: celsius := (fahrenheit-32)*5/9 and fahrenheit = celsius*9/5+32. Please make sure you use loating point division!

To practice parameter passing, the celsius-to-fahrenheit should use pass-by-value and return the fahrenheit value as a return value. Its function header could look like this:
float cel2fah(float cel)

To practice pass-by-reference the fahrenheit to celsius function should use only one parameter and use that as input and output. Its header could look like this:
void fah2cel(float &temperature)

Test your work by providing a complete program with a main function that gives the user a chance to input a temperture and select a conversion. The main function could look like this (don't forget the includes and other important stuff!):

Warning: This code is only a suggestion. It may contain parse errors if you just cut'n'paste it!

```int main() {
float temperature;
char what;
cout << "Please enter a temperature: ";
cin >> temperature;
cout << "Is this in celsius (c) or fahrenheit (f)?";
cin >> what;
if (what == 'c') cout << "This would be " << cel2fah(what) " fahrenheit" << endl;
else {
fah2cel(temperature);
cout << "This would be " << temperature << " celsius" << endl;
}
return 0;
}
```

Optional work

Some other things that you might try:

• Rewrite both function to use pass-by-value in the fahrenheit-to-celsius function and vice versa.
• Make the program repeatable with a do - while loop
• Instead of converting to the other one (celsius or fahrenheit), convert to Kelvin (see Wikipedia: Kelvin for formulas and information)
• Make the program all-purpose by entering a temperature in either Kelvin, Fahrenheit or Celsius and let the user convert it to either Kelvin, Fahrenheit or Celsius (Hint: Always convert to Kelvin inbetween is simpler than implementing 9 conversions)

How?

Please check the labs page on how to get started. There are instructions for visual studio (use version 6) and XCode

Please give the Macs a try. If you simply cannot work with them, go to PE 119, but let your TA know.

Sample programs

have moved to the examples page