Section 0101, 0102, 0103 and Honors, Fall 1995
Project 2
Due: Wednesday, October 11, 1995
Objective
The objective of this project is to practice writing programs with nested
for loops.
Project Policy Reminder
It has been the stated policy of this class, that you are not to work on
the projects together. While you may ask your classmates for help with
simple debugging and for tips on using UNIX, any assistance in developing
the program must not come from your classmates. Again, this means you are
not to have a printed or electronic copy (or access to an electronic copy)
of a classmate's programs. This is considered cheating. If your classmate
is looking at the screen while you are editing your program, this is
probably too much help.
Assignment
Your assignment is to print out a table of sine values (see Sample Run below). To
compute the value of sin(x) when x is an angle expressed in radians
, we will use the following Taylor series:
sin(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + (x^9)/9! - (x^11)/11!
+ (x^13)/13!
To compute the value of sin(x) we will calculate only the first few terms
of the infinite series. The number of terms used will be specified by the
user. In the equation above, only 7 terms have been displayed. Also, in
the equation above the expression 7! (read seven factorial) stands for 1 2
3 4 5 6 7. In general, n! stands for the product of 1 through n. The
Taylor series we use works very well with angles expressed in radians, but
most people are more familiar with angles expressed in degrees. So, the
output of your program should have a table of sine values for angles
between 0 and 360. To convert from degrees to radians, use the formula:
radians = PI * degrees / 180
This is enough information for you to compute the sine values for the
table. You are, of course, not allowed to use the sine function in the
math library. This exercise is to show you how sine values are actually
computed. Finally, the format of your output should conform to the
description in the sample run below -- i.e., report a sine value every 5
degrees, have three values per line, seven digits of precision and nicely
formatted output.
When you have determined that your program works correctly, try running the
program using different numbers of terms. Check the results of your
program against a calculator (be sure you have the calculator in degree
mode) or a calculus textbook. You should notice that the table is more
accurate when you include more terms. How many terms are needed before
your program correctly determined that sin(360) is 0?
What to turn in
When you have fully debugged your program, you will use the script
command to record a sample run of your program. To do this, follow
these directions carefully.
- Check the current directory to see if there is a file called typescript.
If there is a file called typescript, rename it using mv or remove it
using rm. (Consult your UNIX at UMBC manual.)
- Type script at the UNIX prompt.
- Run your program on two test cases. For the first run, use 8 terms
in the Taylor series. For the second run, use the smallest number of
terms that gives you 0.0000000 for sin(360).
- Type exit at the UNIX prompt.
After completing all 4 steps, there should be a file called
typescript in your current directory. Use the cat command to display the file
on the screen. If the file is empty, then you forgot to
do step 4. If the output looks fine, then turn in your project
using the mail2chang command (as in Project 1). When you are asked to type
in the name of the output file, enter typescript for the filename.
Reminder: please do not use any other program to turn in
your project.
Sample Run
The following is a sample run of one version of the project. The output
from your program should be similar. For example, the output should
display 3 sine values per line and give 7 digits of precision. If you are
careful, the decimal points will also line up.
lassie% a.out
This program prints out a table of sine values.
The values are computed using a Taylor series.
You may specify the number terms in the Taylor series.
Enter the number of terms: 8
Table of Sines
sin( 0) = 0.0000000 sin( 5) = 0.0871557 sin( 10) = 0.1736482
sin( 15) = 0.2588190 sin( 20) = 0.3420201 sin( 25) = 0.4226183
sin( 30) = 0.5000000 sin( 35) = 0.5735764 sin( 40) = 0.6427876
sin( 45) = 0.7071068 sin( 50) = 0.7660444 sin( 55) = 0.8191520
sin( 60) = 0.8660254 sin( 65) = 0.9063078 sin( 70) = 0.9396926
sin( 75) = 0.9659258 sin( 80) = 0.9848078 sin( 85) = 0.9961947
sin( 90) = 1.0000000 sin( 95) = 0.9961947 sin(100) = 0.9848078
sin(105) = 0.9659258 sin(110) = 0.9396926 sin(115) = 0.9063078
sin(120) = 0.8660254 sin(125) = 0.8191520 sin(130) = 0.7660444
sin(135) = 0.7071068 sin(140) = 0.6427876 sin(145) = 0.5735764
sin(150) = 0.5000000 sin(155) = 0.4226182 sin(160) = 0.3420200
sin(165) = 0.2588189 sin(170) = 0.1736479 sin(175) = 0.0871553
sin(180) = -0.0000008 sin(185) = -0.0871570 sin(190) = -0.1736501
sin(195) = -0.2588220 sin(200) = -0.3420247 sin(205) = -0.4226253
sin(210) = -0.5000105 sin(215) = -0.5735921 sin(220) = -0.6428107
sin(225) = -0.7071406 sin(230) = -0.7660934 sin(235) = -0.8192225
sin(240) = -0.8661260 sin(245) = -0.9064503 sin(250) = -0.9398931
sin(255) = -0.9662059 sin(260) = -0.9851966 sin(265) = -0.9967310
sin(270) = -1.0007352 sin(275) = -0.9971967 sin(280) = -0.9861656
sin(285) = -0.9677560 sin(290) = -0.9421464 sin(295) = -0.9095809
sin(300) = -0.8703701 sin(305) = -0.8248916 sin(310) = -0.7735919
sin(315) = -0.7169875 sin(320) = -0.6556671 sin(325) = -0.5902946
sin(330) = -0.5216130 sin(335) = -0.4504494 sin(340) = -0.3777216
sin(345) = -0.3044466 sin(350) = -0.2317518 sin(355) = -0.1608878
sin(360) = -0.0932458
lassie%