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

Каким образом программа определяет эффективный угол? - C++

Восстановить пароль Регистрация
 
Tim308
0 / 0 / 0
Регистрация: 08.03.2014
Сообщений: 23
08.03.2014, 01:35     Каким образом программа определяет эффективный угол? #1
Ребят, объясните одну вещь:
есть программа на С++,которая вычисляет при каком угле расстояние полета тела будет максимальным, и выводит эти значения.Вот участок кода который это делает:

C++
1
2
3
4
5
6
7
8
9
10
11
float d, max_d, max_a;
max_d = 0;
for (float a = 0; a < 90; a+=1) перебирает значение угла
{
d = dist(v,a);
if (max_d < d) Почему программа записывает именно максимальное значение d, ведь условие требует ЛЮБОЕ число больше нуля?
{
max_d = d;
max_a = a;
}
}
cout « "Максимальное расстояние: "«d«endl;
cout « "Эффективный угол: "«a«endl;
Собственно вопрос: Каким образом программа определяет эффективный угол?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 01:35     Каким образом программа определяет эффективный угол?
Посмотрите здесь:

C++ Каким образом можно сделать выключение компютера С++
C++ Каким образом записать слеш в символьную переменную
C++ Каким образом зашифровать Hex строки
Каким образом идет поиск слов в кавычках? C++
Можно ли каким-то образом наследовать тип bool C++
Каким образом реализуется квалификатор const? C++
Каким образом разархивировать gzip? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6785 / 3996 / 917
Регистрация: 30.01.2014
Сообщений: 6,816
08.03.2014, 01:54     Каким образом программа определяет эффективный угол? #2
Tim308, Функция dist считает расстояние для текущего угла. В процессе прохода по циклу расстояние сравнивается с max_d. Если посчитанное расстояние для текущего угла больше чем последнее значение max_d, то max_d становится равным значению этого расстояния. Попутно запоминается угол, на котором это расстояние было получено. Ну и т.д. В конце у нас получается максимальное расстояние, достигнутое на заданном диапазоне углов, и собственно угол, на котором получение этого расстояния стало возможным (т.к. они запоминаются вместе).
Цитата Сообщение от Tim308 Посмотреть сообщение
Почему программа записывает именно максимальное значение d, ведь условие требует ЛЮБОЕ число больше нуля?
К сожалению формулировки самого условия ты не привел.
Но по тому, что видно, вроде бы все логично. Если мы считаем эффективным углом тот, при котором достигается наибольшая горизонтальная дальность бросания, то программа работает корректно (я исхожу из предположения, что в функции dist нет ошибок).
Tim308
0 / 0 / 0
Регистрация: 08.03.2014
Сообщений: 23
08.03.2014, 02:14  [ТС]     Каким образом программа определяет эффективный угол? #3
DrOffset, Ааа...я понял..т.е. при каждом проходе цикла программа записывает значение большее 0 в max_d, потом берет это число из max_d и сравнивает его с новым значением d и таким образом находится максимальное
DrOffset
6785 / 3996 / 917
Регистрация: 30.01.2014
Сообщений: 6,816
08.03.2014, 02:45     Каким образом программа определяет эффективный угол? #4
Tim308, да.
Еще хотел спросить, ты в курсе, что эта задача: "нахождение максимального расстояния по заданному углу бросания" не требует перебора? Наибольшее расстояние всегда будет получено при угле 45 градусов.
gunslinger
случайный прохожий
 Аватар для gunslinger
1103 / 721 / 184
Регистрация: 20.07.2013
Сообщений: 1,983
08.03.2014, 03:09     Каким образом программа определяет эффективный угол? #5
Если не учитывать сопротивление воздуха, я прав? Или это повлияет только на расстояние?
Хотя я придираюсь (можно просто считать сопротивление константой, иначе рассчет скорей всего вызовет сложности).
v, так понимаю, скорость тела при броске?
DrOffset
6785 / 3996 / 917
Регистрация: 30.01.2014
Сообщений: 6,816
08.03.2014, 03:46     Каким образом программа определяет эффективный угол? #6
gunslinger, если учитывать сопротивление воздуха, ветер в слоях атмосферы, кривизну земли, разное значение g в зависимости от высоты траектории и т.д., тот тут будут совсем другие расчеты
Конечно тут все упрощено.
v - да, начальная скорость.
Тут формула простая: L = V02 * sin(2 * a) / g
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2014, 09:48     Каким образом программа определяет эффективный угол?
Еще ссылки по теме:

Каким образом переменная отсчитывает выводимые строки? C++
C++ Объясните, каким образом программа могла бы использовать класс string, не прибегая к объявлению using
C++ Каким образом параметры передаются в функцию?
Каким образом легче выучить c++ C++
C++ Каким образом компилировать код не си-подобных языков?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tim308
0 / 0 / 0
Регистрация: 08.03.2014
Сообщений: 23
08.03.2014, 09:48  [ТС]     Каким образом программа определяет эффективный угол? #7
DrOffset, Да знаю.Тут сама суть была написать "умную" программу.
Yandex
Объявления
08.03.2014, 09:48     Каким образом программа определяет эффективный угол?
Ответ Создать тему
Опции темы

Текущее время: 06:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru