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