fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4.  
  5. using namespace std;
  6.  
  7.  
  8. struct Coords { //структура для хранения координат
  9. double x, y;
  10. };
  11.  
  12. const double PHIS_G = 9.80665;
  13.  
  14.  
  15. int main()
  16. {
  17. double rad, speed, height0, deltaX;
  18. cout << "Введите угол падения от 0 до 90 градусов: ";
  19. cin >> rad;
  20. rad *= M_PI/180; //переводим в радианы M_PI - константа из cmath
  21.  
  22. cout << "Введите начальную скорость: ";
  23. cin >> speed;
  24.  
  25. cout << "Введите начальную высоту тела: ";
  26. cin >> height0;
  27.  
  28. cout << "Введите частоту хода: ";
  29. cin >> deltaX;
  30.  
  31. int LenCoord = static_cast<int>((pow(speed, 2) * sin(2*rad))/(PHIS_G*deltaX)) + static_cast<int>(height0); //вычисляем размер массива координат
  32.  
  33. Coords *coord = new Coords[LenCoord]; //выделяем память под массив координат
  34.  
  35. cout << "Вычисление координат в диапазоне от 0 до " << LenCoord+1 << ":\n";
  36.  
  37. for(int i=0; i<LenCoord; i++){ //обработка формулы падения тела
  38. coord[i].x = deltaX*i;
  39. coord[i].y = coord[i].x*tan(rad) - (PHIS_G * pow(coord[i].x, 2))/(2 * pow(speed, 2) * pow(cos(rad), 2)) + height0;
  40. }
  41. //вывод результата
  42. for(int i=0; i<LenCoord; i++)
  43. cout << (i+1) << ". (" << coord[i].x << "; " << coord[i].y << ");\n";
  44.  
  45. delete [] coord; //освобождение памяти
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0s 4556KB
stdin
45
20
10
1
stdout
Введите угол падения от 0 до 90 градусов: Введите начальную скорость: Введите начальную высоту тела: Введите частоту хода: Вычисление координат в диапазоне от 0 до 51:
1. (0; 10);
2. (1; 10.9755);
3. (2; 11.9019);
4. (3; 12.7794);
5. (4; 13.6077);
6. (5; 14.3871);
7. (6; 15.1174);
8. (7; 15.7987);
9. (8; 16.4309);
10. (9; 17.0142);
11. (10; 17.5483);
12. (11; 18.0335);
13. (12; 18.4696);
14. (13; 18.8567);
15. (14; 19.1947);
16. (15; 19.4838);
17. (16; 19.7237);
18. (17; 19.9147);
19. (18; 20.0566);
20. (19; 20.1495);
21. (20; 20.1933);
22. (21; 20.1882);
23. (22; 20.134);
24. (23; 20.0307);
25. (24; 19.8784);
26. (25; 19.6771);
27. (26; 19.4268);
28. (27; 19.1274);
29. (28; 18.779);
30. (29; 18.3815);
31. (30; 17.935);
32. (31; 17.4395);
33. (32; 16.895);
34. (33; 16.3014);
35. (34; 15.6588);
36. (35; 14.9671);
37. (36; 14.2265);
38. (37; 13.4367);
39. (38; 12.598);
40. (39; 11.7102);
41. (40; 10.7734);
42. (41; 9.78755);
43. (42; 8.75267);
44. (43; 7.66876);
45. (44; 6.53581);
46. (45; 5.35383);
47. (46; 4.12282);
48. (47; 2.84278);
49. (48; 1.5137);
50. (49; 0.135583);