Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
#1

Вычисление максимальной дальности полета и максимального угла - C++

22.04.2010, 00:05. Просмотров 453. Ответов 5
Метки нет (Все метки)

Приветствую всех.
Только начал изучение программирования, решил изучать с c++
Задачка для вычисление максимально дальности полета и максимального угла, вот:
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
#include <iostream>
#include <cmath>
 
 
float dist ( float v, float a)
{
    return v * v *  sin (2 * a * 0.0175 )/ 9.8; 
 
}
 
 
using namespace std;
int main()
{
    float v;
    cout << "Vvedite skorost, m/s - ";
    cin >> v;
    float d;
    float max_d;
    float max_a;
    max_d = 0;
    for (float a = 0; a < 90; a += 1)
    {
        d = dist (v,a);
        if (max_d < d)
        {
            max_d = d;
            max_a = a;
        }
 
    }
    cout << "Max distance - " << max_d << endl;
    cout << "Max ugol - " << max_a;
}
Вопросы вот какие:
1. зачем нужна строка max_d = 0;
2. Где здесь вычисляется именно то, что при нахождение максимального угла задача считается выполненной. Я все никак просто не могу алгоритм понять здесь, в этой части:
C++
1
2
3
4
5
6
7
8
9
{
        d = dist (v,a);
        if (max_d < d)
        {
            max_d = d;
            max_a = a;
        }
 
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2010, 00:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление максимальной дальности полета и максимального угла (C++):

Вычисление времени полета тела - C++
Написать программу для вычисления времени полета тела, брошенного под углом к горизонту. Начальная скорость тела равно V и направлена под...

Дискретная модель. Задача на вычисление времени полета тела - C++
В общем вопрос в названии темы. Что такое дискретная модель? Решаю простые задачи на С++ попалась задача на вычисление времени полета тела,...

Неправильное вычисление синуса угла - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; void main() { ...

Вычисление косинуса угла между векторами, в чем ошибка - C++
Написать программу для вычисления косинуса угла между векторами, заданными своими координатами (скалярное произведение векторов делится...

Рекурсия: вычисление суммы и количества цифр числа, максимальной и минимальной его цифры - C++
Помогите, пожалуйста, разобраться и написать программу на С++. Условие такое: Для числа, введеного с клавиатуры, определить рекурсивные...

Рассчитать квадрат синуса угла, значение угла вводится с клавиатуры в градусах - C++
Помогите. Нужно написать программу на СИ(в Visual Studio) которая расчитывает синус угла в квадрате , значение угла вводится с клавиатуры в...

5
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
22.04.2010, 06:46 #2
C++
1
if (max_d < d)
сюда заходит только когда max_d < d

Цитата Сообщение от alfer
1. зачем нужна строка max_d = 0;
max_d может не содержать нуля при создании (так как она не глобальная и не локальная статическая)

Цитата Сообщение от alfer
Где здесь вычисляется именно то, что при нахождение максимального угла задача считается выполненной.
после цикла для максимальной дальности полёта max_d есть её угол max_a
цикл отфильтровал
1
alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
22.04.2010, 08:09  [ТС] #3
Цитата Сообщение от accept Посмотреть сообщение
сюда заходит только когда max_d < d
Эт я понял, но вот вопрос как раз, а что это за max_d , что (какое число) сравнивается с результатом d? Ничего же не вводится, ничего же не вычисляется, а что тогда сравнивается с d?
Я конечно вижу, результат есть, но честно никак не пойму этот момент.
0
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
22.04.2010, 08:49 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
        max_d = 0; //Это инициализация переменной max_d, т.е. при запуске программы максимальная дистанция = 0.
 
        for (float a = 0; a < 90; a     += 1) //Здесь цикл от 0 до 90 градусов.
        {
                d = dist (v,a);//Вычисляется дистанция при введенной скорости v и угла a (который перебирается в цикле)
                if (max_d < d)//Сравниваем расчетную дистанцию d с максимальной max_d (при первом проходе цикла max_d = 0)
                {
                        max_d = d;//устанавливаем значение максимальной дистанции
                        max_a = a;//устанавливаем значение максимального угла
                }
         }
         //После перебора всех углов получаем в max_d максимальную дистанцию и в max_a максимальный угол
1
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
22.04.2010, 10:00 #5
Цитата Сообщение от alfer
что (какое число) сравнивается с результатом d?
предыдущее d
начинается с нуля, таким образом первая полученная дистанция сразу записывается как самая большая (так как она не нулевая), а следующая дистанция (вторая) сравнивается с самой большой дистанцией (первой) и, если вторая больше первой, то вторая запишется как самая большая, а если нет, то вычислится третья дистанция и будет сравниваться с самой большой (первой)
если третья дистанция больше самой большой, то третья запишется как самая большая
смысл цикла в том, чтобы оставить самую большую дистанцию
1
alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
22.04.2010, 14:41  [ТС] #6
Как все просто, правда когда вы объяснили . accept,uggway, большое спасибо.
0
22.04.2010, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2010, 14:41
Привет! Вот еще темы с ответами:

Вычисление максимального элемента побочной диагонали матрицы - C++
Используя прототип функции, написать программу для вычисления максимального элемента, среди элементов, расположенных на побочных диагоналях...

Вычисление максимального элемента в одномерном динамическом массиве - C++
Здравствуйте, появилась такая проблема. Пожалуйста, напишите программу, которая высчитывает максимальный элемент в одномерном динамическом...

Вычисление величины максимального и минимального элементов массива. - C++
Разработать функцию, обрабатывающую массив и вычисляющую две величины. Кроме того, разработать две функции, которые вычисляют те же самые...

Вычисление максимального элемента, среди элементов, расположенных на побочных диагоналях матрицы - C++
Используя прототип функции, написать программу для вычисления максимального элемента, среди элементов, расположенных на побочных диагоналях...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.