# 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