Задача
Самолёт летит из пункта в [latex]A[/latex] в пункт [latex]B[/latex] и обратно со скоростью [latex]V[/latex] км/час. Всё время дует ветер с постоянной скоростью [latex]U[/latex] км/час под углом [latex]\alpha[/latex] радиан к направлению движения (0 соответствует попутному ветру). Расстояние между пунктами составляет [latex]S[/latex] км. Для любых неотрицательных действительных значений угла, расстояния и скоростей вычислите время в пути.
Входные данные
[latex]V[/latex]-скорость самолета, [latex]U[/latex]-скорость ветра, [latex]S[/latex]-расстояние [latex]AB[/latex], [latex]\alpha[/latex]-угол направления ветра.Выходные данные
Время полета [latex]t[/latex] в часах.
Тесты
Входные данные | Выходные данные | |||
[latex]V[/latex] | [latex]U[/latex] | [latex]S[/latex] | [latex]\alpha[/latex] | [latex]t[/latex] |
600 | 20 | 1200 | 1,5708 | 4.0013 |
600 | 20 | 1200 | 0 | 4.00445 |
600 | 20 | 1200 | 3,1415 | 4.00436 |
600 | 20 | 1200 | 1,0472 | 4.0013 |
600 | 20 | 1200 | 2,6179 | 4.00077 |
600 | 601 | 1200 | 0 | inf |
0 | 20 | 1200 | 0 | inf |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <iostream> #include <cmath> using namespace std; int main() { double V, U, S, a, t; cin >> V >> U >> S >> a; t=S/(V+cos(a)*U)+S/(V-cos(a)*U);//Сумма времени полета от A к B и обратно cout << (U>=V ? 1/tan(0) : t); return 0; } |
Решение
Учитывая скорость ветра [latex]U[/latex] и угол [latex]\alpha[/latex] под которым ветер дует на самолет, на пути от [latex]A[/latex] к [latex]B[/latex] скорость самолета будет равна [latex]V+cos(\alpha)\cdot U[/latex] , а на обратном пути от [latex]B[/latex] к [latex]A[/latex] скорость самолета будет равна [latex]V-cos(\alpha)\cdot U[/latex].Общее время полета узнаем по формуле [latex]t =\frac{S}{V+cos(\alpha)\cdot U} +\frac{S}{V-cos(\alpha)\cdot U}[/latex].
— Не смогли придумать название для задачи?
— Пожалуйста, используйте latex для обозначения точек и расстояний.
— В случае, когда самолёт не может достичь пункта назначения, Вы не выводите ответ на вопрос. Время в пути не может быть текстовой строкой. Посмотрите как задать бесконечность в типе данных double и используйте тернарную операцию вместо условного оператора.
— Зачем писать заголовок «Ссылки» перед единственной ссылкой. Кстати, текст «ideone» в ссылке ни о чём не говорит читателю. Напишите, пожалуйста, что-то осмысленное.
— Решение и формула, которую Вы получили абсолютно неверны. Даже странно — типичная школьная задача. Может Вы не в курсе, что здесь происходят два движения — самолёт движется относительно воздуха, а воздух сам тоже движется. У вас же боковой ветер никак не сказывается на времени полёта. Возможно это решение наведёт Вас на правильную мысль.
— Тесты соответствуют предложенному решению и тоже ошибочны.
Думаю, пока Вы не сделаете чертёж и не увидите как складываются вектора скоростей, решение не получится. Сделайте рисунок на бумаге и покажите мне или преподавателю физики.
Вы не слушаете советов…
Но и не отвечаете на замечания.
Даже не знаю, продолжать ли их писать? Попробую ещё разик.
Вы пишите «угол под которым ветер дует на самолет». Такого угла в задаче не задано. Направление ветра задаётся относительно земли (т.е. направления [latex]AB[/latex]).
Для того, чтобы двигаться в направлении [latex]AB[/latex] самолёт должен направлять свой вектор скорости в совсем другом направлении. Т.е. под каким-то углом к [latex]AB.[/latex] Угол этот выбирают так, чтобы составляющая скорости самолёта, перпендикулярная к необходимому направлению движения, компенсировала соответствующую перпендикулярную составляющую скорости ветра (т.н. снос).