Задача. Заданы уравнения двух пересекающихся прямых на плоскости: [latex]y=k_{1}+b_{1}[/latex]; [latex]y=k_{2}+b_{2}[/latex] . Найти (в градусах и минутах) угол между ними, используя формулу: [latex]\tan\varphi=\frac{(k_{2}-k_{1})}{(1+k_{2}*k_{1})} [/latex] .
Значение k1 | Значение k2 | Ответ |
-6 | -38 | -7 градусов 57 минут (два целых отрицательных числа) |
13 | 15 | 0 градусов 35 минут (два целых числа) |
33.7 | 21.6 | 0 градусов 57 минут (два числа с запятой) |
1 | 1 | 0 градусов 0 минут (получаем 0 в числителе) |
1 | -1 | 0 градусов (получаем ноль в знаменателе) |
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 |
#include <iostream> #include <math.h> using namespace std; int main() { float k1, k2; scanf("%f%f", &k1, &k2); if (k1 * k2 == -1) { printf("0 градусов"); } else { float ug = (k2-k1)/(1+k1*k2); float atn = atan(ug); float ingr = atn * 180.0 / M_PI; if (ingr>=0) { float gr = floor(ingr); float mn = (ingr - gr) * 60.0; printf(" x= %f гр. %f мин. ", gr, mn); } else { float gr = ceil(ingr); float mn = (gr - ingr) * 60.0; printf(" x= %f гр. %f мин. ", gr, mn); } } return 0; } |
Для вычисления угла между двумя прямыми, зная тангенс, воспользуемся формулой [latex]\varphi=atan\tan\varphi[/latex]. Полученный результат переводим в градусы по формуле: [latex]\varphi=\frac{180*\varphi}{\Pi}[/latex] . Далее переведем результат в градусы и минуты. Для этого сначала найдем ближайшее целое число меньше полученного и запишем его, как градусы(при этом, если градусы отрицательные, то мы найдем ближайшее большее целое число, и запишем его, как градусы). После этого, от первоначального числа отнимем полученное и переведем его в минуты( если градусы были отрицательными, то от полученного отнимем первоначальное). Для этого результат вычитания домножим на 60. Этот результат запишем в минуты. ( Примечание: если [latex]k2*k1=-1[/latex] , то ответ — 0 градусов )
Для отрицательных углов градусы и минуты считаются неверно.
Причём неверно и в программе и в тестах. Это означает, что никаких тестов Вы не писали, а просто выдаёте результаты программы за тесты.
Это мошенничество. Если ещё раз обнаружу, будете наказаны.
Понял ошибку, больше не повторится.
Основная часть программы работает верно. Но…
— Это не правильно «в градусах или минутах» нужно «в градусах и минутах». Исправьте опечатку.
— По 10-й строке. Вот интересно, как Вы это себе представляете? Вас спрашивают какой угол между двумя прямыми на плоскости, а Вы отвечаете «Решения нет». Нужно сообразить, что это за угол, тангенс которого сосчитать не удаётся из-за деления на ноль.
Готово.
Точно!