summaryrefslogtreecommitdiff
path: root/usr.bin/learn/lib/C/L3.1a
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/learn/lib/C/L3.1a')
-rw-r--r--usr.bin/learn/lib/C/L3.1a56
1 files changed, 56 insertions, 0 deletions
diff --git a/usr.bin/learn/lib/C/L3.1a b/usr.bin/learn/lib/C/L3.1a
new file mode 100644
index 00000000000..9efe184ac7c
--- /dev/null
+++ b/usr.bin/learn/lib/C/L3.1a
@@ -0,0 +1,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