پرتابگری پرتابهای را از نقطهی مبدأ (0،0) در نزدیکی سطح زمین شلیک میکند. به زبان سی پلاس پلاس (C++) برنامهای بنویسید که سرعت اولیه (بر حسب متر بر ثانیه) و زاویهی پرتاب پرتابه (بر حسب درجه) را از کاربر دریافت کند و مشخص سازد در چه زمانی پرتابه دارای بیشینهی ارتفاع است و در چه زمانی به ارتفاع صفر بازمیگردد. سپس برنامه از کاربر مدت زمان و فاصلههای زمانی که بر اساس آنها جزئیات پرتاب نمایش داده میشود را دریافت میکند. آن گاه برنامه نشان میدهد در هر لحظهی خواسته شده پرتابه در چه نقطهای نسبت به مبدأ قرار دارد و میزان جابهجایی چند متر است. هنگامی که سرعت اولیه یا مدت زمان نمایش جزئیات پرتاب یا فواصل زمانی عددی منفی است خروج از برنامه رخ میدهد.
#include<iostream>
#include <iomanip>
#include <math.h>
using namespace std;
#define PI 3.14159265358979323846
#define g 9.80665
int main()
{
cout << fixed << setprecision(2);
cout << endl;
cout << " Projectile Motion *** Programmer: Mohammad Rajabpur \n\n";
cout << " rajabpur.blogsky.com *** rajabpur.blogsky.com \n\n";
cout << " First enter Initial Velocity in m/s. Then enter Launch Angle in degrees. \n";
cout << " The program will compute the time when Maximum Height is achieved. \n";
cout << " It will also calculate time when Height 0 is regained. \n";
cout << " Then you are asked to enter the Duration and Intervals, \n";
cout << " based on which the displacement of the projectile is displayed. \n\n";
cout << " To exit, assign Initial Velocity or Duration or Interval as a negative number. \n\n";
cout << "--------------------------------------------------------------------\n\n";
while (true)
{
double v0, theta, t;
cout << " Initial Velocity (m/s) = ";
cin >> v0;
if (v0 < 0)
{
cout << " The program is terminated.";
break;
}
cout << " Angle (in degrees) = ";
cin >> theta;
double t_h0 = 2 * v0 * sin(theta * PI / 180.0) / g;
double t_h_max = v0 * sin(theta * PI / 180.0) / g;
cout << " Maximum Height: " << t_h_max << " seconds after launch \n";
cout << " Height 0: " << t_h0 << " seconds after launch \n\n";
cout << " Duration (in seconds) = ";
cin >> t;
if (t < 0)
{
cout << " The program is terminated.";
break;
}
double interval;
cout << " Time Interval Displayed (in seconds): ";
cin >> interval;
if (interval <= 0)
{
cout << " The program is terminated.";
break;
}
cout << endl;
cout << " Time \t\t Coordinate \t\t Displacement \n";
cout << " ---- \t\t ---------- \t\t ------------ \n";
for (int i=0; i<=(t / interval); i++)
{
double time = i * interval;
double x = v0 * time * cos(theta * PI / 180.0);
double y = (v0 * time * sin(theta * PI / 180.0)) - (0.5 * g * time * time);
double d = sqrt(x * x + y * y);
cout << " " << time << "\t\t (" << x << ", " << y << ") \t\t" << d << " m" << endl;
}
cout << endl;
cout << "--------------------------------------------------------------------\n\n";
}