Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<cmath>
- using namespace std;
- int main()
- {
- const int n = 15; //количество итераций
- const float g = 9.8;
- float k = 0.7; //cопротивление
- float alpha; // угол в градусах
- float alfa; // угол в радианах
- float vzero, vx, vy;
- float x[n+1] = {0}, y[n+1] = {0};
- float tmax; // время полета
- float h; // интервалы
- float eps[n + 1] = {0}; // погрешности
- float yeps;
- float maxx;
- float xring = 6, yring = 4; // координаты корзины
- //float t; // время полета до корзины
- float a; // угол для броска в корзину в радианах
- float deg; // угол для броска в корзину в градусах
- float v0;
- float tmp;
- cout<<"v0 = ";
- cin>>vzero;
- cout<<"alpha = ";
- cin>>alpha;
- alfa = alpha*M_PI/180;
- tmax = (2*vzero*sin(alfa))/g;
- h = tmax/n;
- vx = vzero*cos(alfa);
- vy = vzero*sin(alfa);
- //cout<<x[0]<<" "<<y[0]<<" "<<eps[0]<<endl;
- for(int i = 1; i < n + 1; i++) // без учета сопротивления
- {
- x[i] = x[i - 1] + vx*h;
- y[i] = y[i - 1] + vy*h - g*h*h/2;
- yeps = y[i - 1] + vy*(h/2) - g*h*h/2;
- eps[i] = abs(yeps - y[i])/abs(yeps);
- vy -= g*h;
- //cout<<x[i]<<" "<<y[i]<<" "<<eps[i]<<endl;
- }
- //cout<<x[0]<<" "<<y[0]<<" "<<eps[0]<<endl;
- x[0] = 0;
- y[0] = 0;
- vx = vzero*cos(alfa);
- vy = vzero*sin(alfa);
- for(int i = 1; i < n + 1; i++) // с учетом сопротивления
- {
- x[i] = x[i - 1] + vx*h;
- y[i] = y[i - 1] + vy*h;
- vx -= k*vx*h;
- vy -= (k*vy*h + g*h);
- //cout<<x[i]<<" "<<y[i]<<" "<<eps[i]<<endl;
- }
- maxx = vzero*cos(alfa)*tmax; // максимальное расстояние
- cout<<maxx<<endl;
- tmp = yring + sqrt(xring*xring + yring*yring); //угол и скоорость для корзины
- a = atan(tmp/xring);
- deg = a*180/M_PI;
- v0 = sqrt(g*tmp);
- cout<<"a = "<<deg<<"\nv0 = "<<v0<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement