Advertisement
vgsamsonov

asdads

May 19th, 2022
431
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include<cmath>
  3. using namespace std;
  4. int main()
  5. {
  6.     const int n = 15; //количество итераций
  7.     const float g = 9.8;
  8.     float k = 0.7; //cопротивление
  9.    
  10.     float alpha; // угол в градусах
  11.     float alfa; // угол в радианах
  12.     float vzero, vx, vy;
  13.     float x[n+1] = {0}, y[n+1] = {0};
  14.     float tmax; // время полета
  15.     float h; // интервалы
  16.     float eps[n + 1] = {0}; // погрешности
  17.     float yeps;
  18.     float maxx;
  19.     float xring = 6, yring = 4; // координаты корзины
  20.     //float t;  // время полета до корзины
  21.     float a; // угол для броска в корзину в радианах
  22.     float deg; // угол для броска в корзину в градусах
  23.     float v0;
  24.     float tmp;
  25.    
  26.     cout<<"v0 = ";
  27.     cin>>vzero;
  28.     cout<<"alpha = ";
  29.     cin>>alpha;
  30.    
  31.     alfa = alpha*M_PI/180;
  32.     tmax = (2*vzero*sin(alfa))/g;
  33.     h = tmax/n;
  34.     vx = vzero*cos(alfa);
  35.     vy = vzero*sin(alfa);
  36.    
  37.     //cout<<x[0]<<"   "<<y[0]<<"  "<<eps[0]<<endl;
  38.     for(int i = 1; i < n + 1; i++) // без учета сопротивления
  39.     {
  40.         x[i] = x[i - 1] + vx*h;
  41.         y[i] = y[i - 1] + vy*h - g*h*h/2;
  42.         yeps = y[i - 1] + vy*(h/2) - g*h*h/2;
  43.         eps[i] = abs(yeps - y[i])/abs(yeps);
  44.         vy -= g*h;
  45.         //cout<<x[i]<<"   "<<y[i]<<"  "<<eps[i]<<endl;
  46.     }
  47.    
  48.     //cout<<x[0]<<"   "<<y[0]<<"  "<<eps[0]<<endl;
  49.     x[0] = 0;
  50.     y[0] = 0;
  51.     vx = vzero*cos(alfa);
  52.     vy = vzero*sin(alfa);
  53.     for(int i = 1; i < n + 1; i++)  // с учетом сопротивления
  54.     {
  55.         x[i] = x[i - 1] + vx*h;
  56.         y[i] = y[i - 1] + vy*h;
  57.         vx -= k*vx*h;
  58.         vy -= (k*vy*h + g*h);
  59.         //cout<<x[i]<<"   "<<y[i]<<"  "<<eps[i]<<endl;
  60.     }
  61.    
  62.     maxx = vzero*cos(alfa)*tmax;    // максимальное расстояние
  63.     cout<<maxx<<endl;
  64.    
  65.     tmp = yring + sqrt(xring*xring + yring*yring);  //угол и скоорость для корзины
  66.     a = atan(tmp/xring);
  67.     deg = a*180/M_PI;
  68.     v0 = sqrt(g*tmp);
  69.     cout<<"a = "<<deg<<"\nv0 = "<<v0<<endl;
  70.    
  71.     return 0;
  72. }
  73.  
  74.  
Advertisement
RAW Paste Data Copied
Advertisement