Design due: Thursday, Sept 5th at the beginning of class
Program due: Wednesday, Sept 11th by 11:59 PM
Getting Started
Refer to Lab 1 if you need a reminder about how to start Cygwin Terminal or Notepad++.
Start by downloading CS101_Assign01_Fa24.zip, saving it in the directory H:\CS101. Using Windows File Explorer, navigate to your CS101 directory on your H: drive and right click on the CS101_Assign01_Fa24.zip file and select Extract All. This should create a subdirectory named CS101_Assign01_Fa24 that contains the assignment files.
NOTE: If there is another CS101_Assign01_Fa24.zip subdirectory inside the CS101_Assign01_Fa24.zip subdirectory, move the files to the outer CS101_Assign01_Fa24.zip subdirectory and delete the inner one.
Start a Cygwin Terminal and run the following commands:
cd h:
cd CS101
cd CS101_Assign01_Fa24
Using Notepad++, open the file
H:\CS101\CS101_Assign01_Fa24\Projectile.cpp
Your Tasks
Design
Based on the requirements described below in the “Program” section, fill out a design template. Consider what the input and output of the program are, and what steps are necessary to compute the output from the input.
The design is due at the beginning of class on Thursday, Sept 5th.
Program
Your task is to write a program that prompts the user to enter the launch angle (in degrees) and initial velocity (in mph) of an object. The program should then print out the object’s total time in the air, the maximum height the object reached, and the horizontal distance the object covered.
Here is an example run of the program (user input in bold):
Enter the initial velocity in mph: 25.6 Enter the launch angle in degrees: 50 For an initial velocity of 11.44 m/s and a launch angle of 50 degrees: The object took 1.79 seconds to hit the ground. The object travelled 43.1 feet or 13.1 meters. The object reached a height of 12.8 feet or 3.9 meters.
The time field should have two decimal places of precision. All of the velocity and distance values should allow for up to four digits in front of the decimal point and one digit after the decimal point.
When you are ready to compile the program, in the Cygwin window type the command
make
when you are ready to compile the program. To run the program, run the command
./Projectile.exe
IF you get an error message that the file is not found, ensure that you are in the correct directory and that there are no syntax errors in your source code.
Hints
Physics
The basic physics governing the trajectory of a projectile object (neglecting air resistance) is based on integrating the initial conditions using the acceleration due to gravity (which for the earth is 9.81 m/s2) with respect to time.
https://i.ytimg.com/vi/Mp8bz5P1m4I/maxresdefault.jpg
Where the initial velocity is v0 and initial angle Θ. Thus we can compute the horizontal and vertical components of the initial velocity as
The position of the object as a function of time t is found by integrating the velocity with respect to time (where g = 9.81 m/sec is the acceleration of gravity) as follows
where x(t) and y(t) are the positions at time t (assuming the object started at x(0) = 0 and y(0) = 0).
Therefore we can find the time it takes the object to hit the ground by setting y(t) = 0 and solving for tmax giving
Once the time is computed, we can find the maximum distance, i.e. range, by substituting tmax into x(t) as
Similarly we can find the maximum height by substituting tmax/2 (which is when the maximum height will occur) into y(t) as
NOTE: It is important that all the units match. Thus some useful conversions
- 3.28 feet/meter
- 3600 seconds/hour
- 1609 meters/mile
USE the computer to compute the conversion factors by simply writing expressions in your program and storing the results in variables.
Programming
START EARLY! And develop the program incrementally! You should always have a working program at each step (even if only minimally) to make it easier to debug errors. For example, make sure the program obtains the user input properly and then add one computation at a time printing out each intermediate value. Also make sure you follow good programming practices such as adding comments, using meaningful variable names, and having proper indentation in the program.
See pages 346–353 of the textbook for details regarding the conversion specifiers for printf.
Grading
Your grade will be determined as follows:
- Design artifact: 10
- Proper variable datatypes: 5
- Input initial velocity: 10
- Input initial angle: 10
- Determine time: 10
- Determine range feet: 10
- Determine range meters: 10
- Determine height feet: 10
- Determine height meters: 10
- Proper output format: 10
- Good coding practices: 5
Submitting
Your design will be collected in class on the day that designs are due.
To submit your program, make sure your Projectile.cpp file is saved, and in the Cygwin window type the command
make submit
Enter your Marmoset username and password (which you should have received by email.) Note that your password will not be echoed to the screen. Make sure that after you enter your username and password, you see a message indicating that the submission was successful.
Make sure that you check the file(s) you submitted to ensure that they are correct. See the instructions for Verifying your submission.