summaryrefslogtreecommitdiff
path: root/usr.bin/learn/lib/C/L3.1a
blob: 9efe184ac7cc7296db7731eb7dccfe276e11e198 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#print
(Section 1.3)
The file Ref.c contains a copy of
a program to convert Fahrenheit to
Celsius that prints from 0 to 300
degrees in steps of 20.
Modify it to print from 300 down to 0
in steps of 50. Type ready when you're done.
#once #create Ref
 300  148.9
 250  121.1
 200   93.3
 150   65.6
 100   37.8
  50   10.0
   0  -17.8
#once #create Ref.c
/* print Fahrenheit-Celsius table 
	for f = 0, 20, ..., 300 */
main()
{
	int lower, upper, step;
	float fahr, celsius;

	lower = 0;	/* lower limit of temperature table */
	upper = 300;	/* upper limit */
	step = 20;	/* step size */

	fahr = lower;
	while (fahr <= upper) {
		celsius = (5.0/9.0) * (fahr-32.0);
		printf("%4.0f %6.1f\n", fahr, celsius);
		fahr = fahr + step;
	}
}
#user
a.out >x
#cmp Ref x
#succeed
Here's our solution:

main()	/* Fahrenheit-Celsius 300 ... 0 by 50 */
{
	int lower, upper, step;
	float fahr;

	lower = 0;	/* lower limit of temperature table */
	upper = 300;	/* upper limit */
	step = 50;	/* step size */

	for (fahr = upper; fahr >= lower; fahr = fahr - step)
		printf("%4.0f %6.1f\n", fahr, (5.0/9.0) * (fahr-32.0));
}
#log
#next
3.1b 10