С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/37: Рейтинг темы: голосов - 37, средняя оценка - 4.57
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308

Вычислить угол под которым брошено тело

23.08.2012, 21:29. Показов 7578. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго время суток. Написать программу, в которой по известной начальной скорости V и времени полета T определяется угол https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha под которым тело брошено по отношению к горизонту (воспользоваться следующим соотношением
https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha =\arcsin(\frac{g*T}{2*V})). Вот сама программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<cmath>
#include<iostream>
using namespace std;
int main()
{
setlocale( LC_ALL,"Russian" );
 const  double PI = 3.1415;
 const  double g = 9.8;
 double V, T, result, alpha;
   cout<<" Введите скорость:  ";
   cin>>V;
cout<<" Введите время:  ";
   cin>>T;
result = (g*T)/(2*V);
 ( result < -1  ||  result  > 1 )? (cout<<" Не верное значение:  "<<endl, exit(0)):cout<<" Такого угла не существует!  ";
  alpha = asin (result) * 180.0 / PI;
   cout<<"Значение угла равно: "<<alpha;
   system("pause");
   return 0;
}
Но она работает не правильно. Как сделать при значениях отношения https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{g*T}{2*V} меньших -1 или больших 1 выскакивало сообщение: " Не верное значение! Такого угла не существует! Введите верные значения " и только после значений удовлетворяющих данному условию, выводилось значение угла в градусах программа завершалась бы. У меня работает с точностью наоборот. При значениях V=98 и T=10 значения отношение получается 0.5 что соответствует 30 градусам у меня выскакивает ошибка внизу. Не знаю почему???? Помогите пожалуйста???? Заранее огромное спасибо за помощь.
Миниатюры
Вычислить угол под которым брошено тело  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.08.2012, 21:29
Ответы с готовыми решениями:

По начальной скорости и времени полета тела определить угол, под которым тело брошено по отношению к горизонту
Начали выполнять работы по программированию, а именно Создайте программу, в которой по известной начальной скорости V и времени полета тела...

Задача по физике. С некоторой высоты под углом к горизонту брошено тело.
С некоторой высоты h_0 под углом к горизонту \alpha со скоростью U брошено тело. Вычислить,какое расстояние по горизонтали оно пролетит...

Найти угол, под которым было брошено тело
тело кинутое под углом к горизонту упало на землю на расстоянии, вдвое большем чем высота подьема, найти угол под которым кинули тело

22
 Аватар для Buckstabue
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
23.08.2012, 21:53
Запутанный алгоритм у вас, но в строке 16 у вас обязательно выведется либо "Не верное значение", либо "Такого угла не существует". Почитайте совсем немного про условную операцию и сразу отыщите ошибку. А лучше замените все на обычный опертор if ... else ...
0
 Аватар для Smirnov_Uriy
5 / 5 / 1
Регистрация: 30.12.2011
Сообщений: 11
23.08.2012, 22:48
Попробуйте так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
 
int main ()
{
    double a, T, V, result;
    const double g = 9.8;
    const double Pi = 3.14;
    setlocale (LC_ALL," ");
    cout << "Введите скорость и время: ";
    cin >> V >> T;
    result = (g*T)/(2*V);
    if (result < -1 && result >1){
        cout << "Не верное значение!" << endl;
    }
    else {
        cout << "Значение угла = " << asin(result)*180/Pi <<endl;
    }
    return 0;
}
1
11 / 1 / 0
Регистрация: 24.12.2009
Сообщений: 7
24.08.2012, 02:38
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
#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
 
int main ()
{
    double  T, V, result;
    const double g = 9.8;
    const double Pi = acos(-1.0);
    setlocale (LC_ALL," ");
    cout << "Введите скорость и время: ";
    cin >> V >> T;
    result = (g*T)/(2*V);
    if (result < -1 || result >1)
    {
        cout << "Не верное значение!" << endl;
    }
    else 
    {
        cout << "Угол = " << asin(result) * 180 / Pi <<endl;
    }
    return 0;
}
Правильно работающая программа...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.08.2012, 10:45
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    double g = 9.81;
    double V, T;
    double angle;
    cout<<"V = ";cin>>V;
    cout<<"T = ";cin>>T;
 
    if(1 < fabs(g*T/(2*V)))
        cout<<"Parameters are not show flying!\n";
    else
    {
        angle = asin(g*T/(2*V));
        cout<<"angle (radians) = "<<angle<<endl;
        cout<<"angle (degrees) = "<<angle*(90/asin(1.0))<<endl;
    }
    return 0;
}
Миниатюры
Вычислить угол под которым брошено тело  
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
24.08.2012, 13:00  [ТС]
-=ЮрА=- полностью с тобой согласен. Задача из того же самого Васильева А.Н. "Самоучитель C++ с задачами и примерами". Глава I часть I "Процедурное программирование в C++". Используя соотношения: https://www.cyberforum.ru/cgi-bin/latex.cgi?{v}_{x}={v}_{0}*\cos (\alpha ) и https://www.cyberforum.ru/cgi-bin/latex.cgi?{v}_{y}={v}_{0}*\sin (\alpha )-g*t В момент падения {v}_{y}=0, отсюда получаем:
https://www.cyberforum.ru/cgi-bin/latex.cgi?{v}_{0}*\sin (\alpha )-g*t=0 \Rightarrow \sin (\alpha )= (g*t)/{v}_{0} \Rightarrow \alpha = \arcsin ((g*t)/{v}_{0}) Почему он использует соотношение: https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha =\arcsin (\frac{g*T}{2*V}) я так и не понял???? И еще -=ЮрА=- и SiQeR объясните мне пожалуйста почему вы используете при вычислении arcsin: SiQeR
C++
1
const double Pi = acos(-1.0);
-=ЮрА=-
C++
1
 cout<<"angle (degrees) = "<<angle*(90/asin(1.0))<<endl;
. Я не понимаю???? -=ЮрА=- у меня к тебе еще один вопрос, в твоей программе когда я ввел значения V=4.9 и T=1 результат равен 1=
https://www.cyberforum.ru/cgi-bin/latex.cgi?\arcsin ({90}^{0}) программа выдает сообщение: "Parameters are not show flying!"???? Заранее огромное спасибо.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.08.2012, 13:15
Цитата Сообщение от isaak Посмотреть сообщение
объясните мне пожалуйста почему вы используете при вычислении arcsin: SiQeR
Код C++
1
const double Pi = acos(-1.0);
-=ЮрА=-
Код C++
1
*cout<<"angle (degrees) = "<<angle*(90/asin(1.0))<<endl;
. Я не понимаю???
- потому что все math.h ный арксинус возвращает величину угда в радианах, и чтобы перейти к градусам нужно радианы*90/(Пи/2) как это делаю я, либо радианы*180/(Пи) как это делает SiQeR. На счёт формулы - она выводится, по свободе покажу, пока мне не до этого
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.08.2012, 13:26
Цитата Сообщение от isaak Посмотреть сообщение
программа выдает сообщение: "Parameters are not show flying!"???? Заранее огромное спасибо
- во первых надо вводить хотябы 4,905 (у меня ведь g = 9.81
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
double g = 9.81;
), а во вторых - по моему именно с тобой мы обсуждали, что в машинном представлении числа с плавающей точкой представляются несколько по иному нежели мы привыкли: скажем для нашей железяки 1 и 0,99(9) в 15 знаке будут одним и тем же. Вот смотри отработку для близких к 90 градусам параметрах
Миниатюры
Вычислить угол под которым брошено тело  
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
24.08.2012, 14:06  [ТС]
-=ЮрА=- спасибо за ответ. Но не совсем понятно, чтобы перейти к градусам нужно радианы*90/(Пи/2), либо радианы*180/(Пи) запись должна выглядеть вот так:
C++
1
2
3
#define PI 3.1416
cout<<"angle (degrees) = "<<angle*(180.0 / PI)<<endl;
cout<<"angle (degrees) = "<<angle*(90.0 / PI)<<endl;
Вроде бы так????
Хотя нет не правильно! Здесь PI = 3.1416 в радианах. Получается полная чушь градусы делим на радианы.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.08.2012, 14:21
isaak, asin(1.0) равен Пи/2
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
24.08.2012, 14:40  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
isaak, asin(1.0) равен Пи/2
Это я знаю, не совсем понятно как C++ переводить из радианов в градусы???? Значить не всегда нужно умножать на 180.0 / PI ???? Нужно использовать табличные значения тригонометрических функций???? Хотя здесь: http://www.cplusplus.com/refer... math/asin/ показано вот так???? Че то я совсем запутался????
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.08.2012, 15:16
isaak, еще раз:мы вычислили у=asin(x) получили РАДИАНЫ.Как переводить из радиан в градусы?Ответ:общепринятая формула перевода:
радианы*360/(2*Пи)
Теперь раскроем скобки:
радианы*180/(Пи) или же радианы*90/(Пи/2) вот ее я и использовал в коде.У нас asin(1.0) равен Пи/2 тобишь чтобы перевести y=asin(x) из радиан в градусы достаточно проделать следующее у*90/asin(1.0) что тут непонятного?
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
24.08.2012, 17:06  [ТС]
-=ЮрА=- за ответ. Но все равно не понятно????? В приведенной мною выше ссылке: http://www.cplusplus.com/refer... math/asin/
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <math.h>
 
#define PI 3.14159265
 
int main ()
{
  double param, result;
  param = 0.5;
  result = asin (param) * 180.0 / PI;
  printf ("The arc sine of %lf is %lf degrees\n", param, result );
  return 0;
}
В этом коде 180 на 3.14159265. А у тебя с SiQeR получается следующее:
asin(1.0) равен Пи/2 = 90 градусов 90 деленное на 90 это 1; acos(-1.0) = Пи = 180 градусов 180 деленное на 180 тоже 1. Любое число умноженное на 1 есть само число. И ни какого нет перевода из радиан в градусы. Или здесь не видно как работает преобразование из радиан в градусы????
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2012, 15:14
Цитата Сообщение от isaak Посмотреть сообщение
#define PI 3.1416
cout<<"angle (degrees) = "<<angle*(180.0 / PI)<<endl;
cout<<"angle (degrees) = "<<angle*(90.0 / (PI/2))<<endl;
isaak, я правда не мог понять какой момент тебя смущает. Попробую написать ещё раз
есть радианы которые возвратил арксинус назовём из РАДИАНЫ. Теперь мы хотим пропечатать угол в градучах мы делаем следующее
C++
1
2
ГРАДУСЫ = РАДИАНЫ*(180/acos(-1));
ГРАДУСЫ = РАДИАНЫ*( 90/asin(1.0));
что непонятного в этих строках?

Добавлено через 1 минуту

Не по теме:

аркосинус(1) = Пи
арксинус(1) = Пи/2
т.е аркосинус(1) НЕ РАВЕН арксинус(1) предположу что это смущало:scratch:

0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
25.08.2012, 17:40  [ТС]
-=ЮрА=- вопрос в следующем как программа вычисляет acos(-1) = 180 или acos(-1) = PI = 3.1416?
Если вычисляет как:
acos(-1) = 180, тогда:
ГРАДУСЫ = РАДИАНЫ*(180/acos(-1))= РАДИАНЫ*(180/PI) = РАДИАНЫ*(180/180) = РАДИАНЫ*1;
ГРАДУСЫ = РАДИАНЫ*( 90/asin(1.0)) = РАДИАНЫ*( 90/(PI /2)) = РАДИАНЫ*(90/90) =РАДИАНЫ*1;
PI = 3.1416
Если вычисляет как acos(-1) = 180 = PI = 3.1416:
ГРАДУСЫ = РАДИАНЫ*(180/acos(-1))= РАДИАНЫ*(180/PI) = РАДИАНЫ*(180/3.1416);
ГРАДУСЫ = РАДИАНЫ*( 90/asin(1.0)) = РАДИАНЫ*( 90/(PI /2)) = РАДИАНЫ*(180/PI) =РАДИАНЫ*(180/3.1416);

Нужно делить на 3.1416, чтобы получить ГРАДУСЫ ???? Вот в чем вопрос.
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
25.08.2012, 17:58
Господи ты боже мой. acos возвращает угол в радианах. В диапазоне [0; π]. asin то же самое, но в [–π/2; π/2].

Один радиан — это 180/π градусов. Радианы надо умножить на 180/π, чтобы получить градусы.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.08.2012, 18:51
Цитата Сообщение от isaak Посмотреть сообщение
или acos(-1) = PI = 3.1416?
- math.h аркосинус возращает радианы
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
25.08.2012, 22:57  [ТС]
-=ЮрА=- насколько я понял наиболее верная формула по которой считает встроенная библиотека math.h есть:
ГРАДУСЫ = РАДИАНЫ*(180/acos(-1))= РАДИАНЫ*(180/PI) = РАДИАНЫ*(180/3.1416);
Да верно????
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
25.08.2012, 23:31
Цитата Сообщение от isaak Посмотреть сообщение
asin(1.0) равен Пи/2 = 90 градусов
нет он равен asin(1.0) равен Пи/2 =1,57 радиан
в одном градусе 0,01745329222222222222222222222222 радиан
в одном радиане 57,295780490442968321226628812406 градусов
можешь и при помоши этих чисел переводить
так что твой вывод
Цитата Сообщение от isaak Посмотреть сообщение
90 градусов 90 деленное на 90 это 1;
неверный

Не по теме:

а есть еще деграды
там прямой угол 100 градусов



Добавлено через 1 минуту
Цитата Сообщение от isaak Посмотреть сообщение
насколько я понял наиболее верная формула по которой считает встроенная библиотека math.h есть:
ГРАДУСЫ = РАДИАНЫ*(180/acos(-1))= РАДИАНЫ*(180/PI) = РАДИАНЫ*(180/3.1416);
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
math.h аркосинус возращает радианы
math.h не работает с градусами
перевод ручками
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,308
25.08.2012, 23:43  [ТС]
ValeryS объясни пожалуйста же как тогда здесь math.h вычисляет значение в градусах:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* acos example */
#include <stdio.h>
#include <math.h>
 
#define PI 3.14159265
 
int main ()
{
  double param, result;
  param = 0.5;
  result = acos (param) * 180.0 / PI;
  printf ("The arc cosine of %lf is %lf degrees.\n", param, result );
  return 0;
}
http://www.cplusplus.com/refer... math/acos/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2012, 23:43
Помогаю со студенческими работами здесь

Тело брошено под углом к горизонту. Найдите угол бросания и начальную скорость
1. тело брошено под углом к горизонту . найдите угол бросания и начальную скорость если наибольшая высота подъема 20 м, а радиус кривизны...

Тело брошено под углом
народ помогите плиз решить на v бейсики 1 Тело брошено под углом. Задана начальная скорость и угол полета. Определить максимальную...

Кинематика: тело брошено под углом...
Простенькая задачка, но что-то я всё равно в ступоре.. Тело брошено со скоростью v0 под углом альфа. Найти v0 и альфа, если максимальная...

Тело брошено с начальной скоростью V0 под углом α к горизонту
Тело брошено с начальной скоростью V0 под углом α к горизонту .Нарисовать траекторию тела и показать векторы тангенциального и нормального...

Тело брошено под углом к горизонту: найти дальность полета
. Тело массой 1кг брошено под углом 40° к горизонту. Сила сопротивления воздуха зависит от скорости движения: при скорости более 5м/с сила...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru