In: Computer Science
Program specifics:
Write a C++ program that does the following:
a. Asks the user for the distance to the pin and the depth of the green (both in yards). (Note: The pin is the hole in the green and the depth is the diameter of the green, assuming it is circular.)
b. Asks the user for an integer club number from 2 to 10, where 10 is the pitching wedge (this club lifts the ball out of rough, sand, etc). If the user enters an invalid club number, the program prints a warning and asks for the club number again.
c. Asks the user for a swing type, from 1 to 4, where 4 is a full swing, 3 is a three-quarters swing, 2 is a half swing, and 1 is a quarter swing. The program should check to make sure the swing is a valid number and if it is not, allow the user to try again. There is no requirement to limit the number of guesses of either the club type or swing strength,
d. Uses the following constants - a1, b1, a2, b2, a3, and b3—that are embedded into the following equations: Golf Constants for the program A B 10.2 3.27 53.5 -1.75 19.6 4.89 clubangle(degrees) = a1 + b1*0.85*clubnumber; (see figure at right) clublength(inches) = a2 + b2*1.05*clubnumber; (see figure at right) clubspeed(yards/s) = 1.1 * (a3 + b3 * swingnumber) * (clublength(inches)/40)^2; |
e. Determines the distance the ball travels,
how far it lands from the hole that is on the green (the "pin"),
and whether it hits the green. You can assume the ball travels
perfectly straight, there is no wind resistance, and the pin is in
the center of the green. To determine the distance the ball
travels, use the following equation:
distance = club
speed^2 * sin(2*club angle in radians)/g
(g = 32.2 ft/s2
is the acceleration of gravity in English units—make sure you
convert your units correctly to get distance in yards).
f. The program reports to the screen, in a well-formatted table: the club used, the swing number, the distance the ball travels, the distance from the pin that the ball hits the ground (i.e., the error or accuracy), and "Yes" if the ball hits on the green, or else "No". Assume that the ball does not roll after hitting the ground (really wet ground).
g. The table must have appropriate labels.
h. If the ball does not hit the green, the program continues to ask the user for another club number and swing speed.
i. If the club number entered is 99, the program ends
/****************************************************/
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int main()
{
// Declaring constants
const double A1 = 10.2;
const double B1 = 3.27;
const double A2 = 53.5;
const double B2 = -1.75;
const double A3 = 19.6;
const double B3 = 4.89;
const int SENTINEL = 99;
double g = 32.2 * 0.333333;
// Declaring variables
double clubAngle, clublength, clubspeed, distance, pinDistance,
depth;
int clubnumber, swingnumber;
string choice;
// setting the precision to two decimal places
std::cout << std::setprecision(2) << std::fixed;
// Getting the pin distance entered by the user
cout << "Enter the distance from the Pin (in yards):";
cin >> pinDistance;
// getting the green depth entered by the user
cout << "Enter the Green Depth :";
cin >> depth;
// Getting the valid input entered by the user
while (true)
{
while (true)
{
cout << "\nEnter Club Number :";
cin >> clubnumber;
if (clubnumber == 99)
{
exit(0);
}
else if (clubnumber < 2 || clubnumber > 10)
{
cout << "** Invalid.Must be between 2-10 **" <<
endl;
}
else
break;
}
// Getting the valid input entered by the user
while (true)
{
cout << "Enter Swing Number :";
cin >> swingnumber;
if (swingnumber < 1 || swingnumber > 4)
{
cout << "** Invalid.Must be between 1-4 **" <<
endl;
}
else
break;
}
// Calculating the club angle
clubAngle = (A1 + B1 * 0.85 * clubnumber) * (3.14159 / 180);
// Calculating the club length
clublength = A2 + B2 * 1.05 * clubnumber;
// Calculating the club speed
clubspeed = 1.1 * (A3 + B3 * swingnumber) * pow((clublength / 40),
2);
// Calculating the distance the ball travelled
distance = pow(clubspeed, 2) * sin(2 * clubAngle) / g;
// Displaying the report
cout << setw(35) << left << "Club Used :"
<< clubnumber << endl;
cout << setw(35) << left << "Swing Number :"
<< swingnumber << endl;
cout << setw(35) << left << "Distance the ball
travelled :" << distance << " feet." <<
endl;
cout << "The distance from the pin that the ball hits the
ground (in yards) : ";
cout << abs(pinDistance - distance) << endl;
if (abs(pinDistance - distance) <= depth)
{
choice = "Yes";
}
else
{
choice = "No";
}
cout << "Is the ball hits on the green :" << choice
<< endl;
}
return 0;
}
/****************************************************/
/****************************************************/
Output:
/****************************************************/