9p / who / tweedy / 9C / 1
Exercise 1.15: Temperature Conversion (with function)
Code
#include <u.h>
#include <libc.h>
/* print Fahrenheit-Celsius table for fahr = 0, 20, ..., 300;
floating-point version, with header, with function */
#define C 0
#define F 1
float convert(int output, float input);
void
main()
{
float fahr;
int lower, upper, step;
lower = 0; /* lower limit of temperature table */
upper = 300; /* upper limit */
step = 20; /* step size */
fahr = lower;
print(" F \t C\n---\t------\n");
while (fahr <= upper) {
print("%3.0f\t%6.1f\n", fahr, convert(C, fahr));
fahr = fahr + step;
}
}
float convert(int convertto, float input)
{
float output = 0;
if(convertto == C){
output = (5.0/9.0) * (input-32.0);
return output;
}
else if(convertto == F){
output = (input * 9.0/5.0) + 32.0;
return output;
}
else
return -1;
}
Output
$ 9c temp_func.c; 9l temp_func.o -o temp_func
$ ./temp_func
F C
--- ------
0 -17.8
20 -6.7
40 4.4
60 15.6
80 26.7
100 37.8
120 48.9
140 60.0
160 71.1
180 82.2
200 93.3
220 104.4
240 115.6
260 126.7
280 137.8
300 148.9
tweedy