Форум программистов, компьютерный форум CyberForum.ru

Расчитать величину и направление относа парашютиста, относительно точки десантирования - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Codeblocks - как добавить поддержку С++ http://www.cyberforum.ru/cpp-beginners/thread551855.html
Подскажите, как сделать чтобы кодеблокс мог компилировать С++ сорцы? К студии не могу подключить, пишет какую-то неясную ошибку http://www.geoffchappell.com/studies/msvc/cl/cl/errors/d2003.htm . А стандартный компилятор не понимает С++.
C++ Отразить элементы массива! Помогите пожалуйста! Вот исходное задание: Задан массив A(M), число элементов которого кратно N. Отразить каждую группу из N элементов. Элементы массива – вещественные числа в диапазоне ±1000, M - целое число в диапазоне , N - целое число в диапазоне Например: М=8, N=4, Исходный массив : 0 1 2 3 4 5 6 7 Отражённый массив 3 2 1 0 7 6 5 4 Если M не кратно N,... http://www.cyberforum.ru/cpp-beginners/thread551849.html
Файл: Поменять местами минимальный и максимальный элементы. C++
Дан файл вещественных чисел. Поменять в нём местами минимальный и максимальный элементы. На ум приходит только перенести все числа в массив, поменять в нём местами мин. и макс. элементы, внести полученный результат в файл. Но как это реализовать?
C++ Простенькая для вас задача посмотрите если не трудно
Дано натуральное число n (n<10000). Определить сколько цифр в числе, найти первую цифру числа, найти предпоследнюю цифру числа. P.s Только важное условие чтобы при невыполнении условий, программа не работала. Есть похожая программа для n<100 , но я чайник не могу переделать, помогите пожалуйста. #include <stdio.h> #include <conio.h> #include <stdlib.h> int digits(int x)
C++ Сортировка подсчетом http://www.cyberforum.ru/cpp-beginners/thread551812.html
Доброго времени суток. Написал код, вот только выдает ошибку: error C2061: синтаксическая ошибка: идентификатор "a". error C2061: синтаксическая ошибка: идентификатор "b" (строки 26 и 35). Подскажите как исправить. Задача звучит так: Сортировка подсчетом. Выходной массив заполняется значениями “-1”. Затем для каждого элемента определяется его место в выходном массиве путем подсчета количества...
C++ invalid operands of types 'double' and 'int' to binary 'operator%' В строке где If выдает вот эту ошибку 2 раза: invalid operands of types 'double' and 'int' to binary 'operator%' #include <iostream> #include <cmath> using namespace std; int main() { подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2012, 09:10     Расчитать величину и направление относа парашютиста, относительно точки десантирования
Виктор1993, ниже мой взгляд на проблемму, вводим начальную высоту прыжка и скорость снижения парашутиста и наслаждаемся симуляцией полёта в реальном времени
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
 
struct HeightWind
{
    double speed;
    double asimut;//в градусах
};
 
//Функция шаблон для безопасного ввода
template <class T>
bool EnterValue(const char * msg, T &val)
{
    bool bRet = true;
    cout<<msg;
    if(!(cin>>val))
    {
        bRet = false;
        cout<<"ошибка ввода\n";
        cin.clear();
        cin.sync();
    }
    return bRet;    
}
 
int main()
{
    system("chcp 1251");//Кто хочет пусть руссифицирует через
    //setlocale SetConsoleOutputCP CharToOem wprintf определитесь сами
    //мне проще system("chcp 1251") и не ломаю мозг над єтим
    HeightWind * windList = NULL;//Массив направлений 
    //и скоростей ветра на разных высотах
    int i, N;//N будет содержать в себе число значений в массиве windList
    double X, Y, Z;//координаты парашутиста
    double v0 = 10;//Начальная скорость парашутиста по оси Z
    //Принято что безопасным считается прыжок если нач скорость
    //составляет порядка 10 м/с (т.е. когда раскрыли парашут
    //достигли скорости 10 м/с, как раз 1-ая сек падения и с такой
    //скоростью по летим по оси Z до самого низа)
    //10м/с = 36 км/ч будет больше - приведёт к травмам
    double Vx, Vy, Vz;//Проекции скорости парашутиста на оси
    double V;//Полная скорость парашутиста, она будет складываться
    //из компонет vx vy vz если будет более 20 м/с прыжок может иметь
    //печальные последствия 20 м/с ~ 75 км/ч
    double vx, vy;//Компоненты скорости ветра
    double asimut;//Азимут для вектора скорости парашутиста
    double heightangle;//Угол места (возвышение)
    double length;//Удаление от вертикали точка прыжка-земля
    double dt, T;//Думаю ясно что означает время полёта
    double DEG = 90/asin(1.0);//Коєффициент для перевода градусов в радианы
    while(true)//Бесконечный ввод(в общем сможем не закрывая приложение
    {   //моделировать полёт снова и снова с разными данными
        srand(time(0));//Генерировать ветер буду случ образом
        windList = NULL;
        //Обнуляем координаты и время
        T = (X = (Y = (Z = 0)));
        asimut = 0;
        heightangle = 0;
        length = 0;
        Vx = (Vy = (Vz = 0));
        vx = (vy = 0);
        if(EnterValue("Введите начальную высоту прыжка   ", Z))
        //Всё же сотавляю возможность ввести начальную скорость самим
        if(EnterValue("Введите начальную сорость падения ", v0))
        {
            //Собственно моделирование прыжка
            N = 1 + int(Z/10);//думаю шаг в 10 метров будет самое оно
            try
            {
                windList = new HeightWind[N];
            }
            catch(bad_alloc &e)
            {
                cout<<"Ошибка выделения памяти : "<<e.what()<<endl;
                windList = NULL;
            }
            if(windList)
            {
                for(i = 0; i < N; i++)
                {
                    windList[i].asimut = (rand()%3600 - 1800)/10.0;
                    windList[i].speed  = (rand()%200  - 100 )/10.0;//20 м/с и так уже шквальный ветер
                }
                dt = 1;//Не забываем у нас же шаг 1 сек
                for(Vz = v0, i = 0; 0 < (Z - Vz*T) && i < N; T = T + dt, i = i + 1)//Шаг 1 сек
                {
                    system("cls");
                    vx = (windList[i].speed)*dt*cos(windList[i].asimut/DEG);
                    vy = (windList[i].speed)*dt*sin(windList[i].asimut/DEG);
                    Vx = Vx + vx;
                    Vy = Vy + vy;
                    X += vx*dt;
                    Y += vy*dt;
                    length = sqrt(X*X + Y*Y);
                    heightangle = atan2(length,(Z - Vz*T));
                    asimut = atan2(X,Y);
                    V = sqrt(Vx*Vx + Vy*Vy + Vz*Vz);
                    cout<<"*************************************\n";
                    cout<<"Начальная высота прыжка : "<<Z<<endl;
                    cout<<"Начальная скорость прыжка : "<<v0<<endl;
                    cout<<"*************************************\n";
                    cout<<"Скорость вектра         : "<<windList[i].speed<<endl;
                    cout<<"Азимут скорости ветра   : "<<windList[i].asimut<<endl;
                    cout<<"Высота парашутиста (Z)  : "<<(Z - Vz*T)<<endl;
                    cout<<"Коодинаты парашутиста   :\n";
                    cout<<"X = "<<X<<endl;
                    cout<<"Y = "<<Y<<endl;
                    cout<<"Азимут парашутиста      : "<<asimut*DEG<<endl;
                    cout<<"Угол места(возвышение)  : "<<90 - heightangle*DEG<<endl;
                    cout<<"Удалённость от вертикали прыжка : "<<length<<endl;
                    cout<<"Скорость парашутиста    :\n"<<length<<endl;
                    cout<<"В вертикальном   направлении : "<<Vz<<endl;
                    cout<<"В горизонтальном направлении : "<<sqrt(Vx*Vx + Vy*Vy)<<endl;
                    cout<<"Полная скорость парашутиста  : "<<V<<endl;
                    cout<<"*************************************\n";
                }
                dt = (Z - Vz*(T - 1))/Vz;
                cout<<"Итерации остановлены за "<<dt<<" сек до приземления\n";
                delete [] windList;
                system("pause");
                system("cls");
            }
        }   
    }
    return 0;
}
Миниатюры
Расчитать величину и направление относа парашютиста, относительно точки десантирования  
 
Текущее время: 01:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru