Даны 2 отрезка A и B. Вычислить угол в градусах, под которым они расположены друг относительно друга - Free Pascal
Формулировка задачи:
Даны два отрезка А и В, заданные координатами их концов (АX1,АY1),(АX2,АY2) и (ВX1,ВY1),(ВX2,ВY2) – целыми числами. Вычислить угол в градусах (вещественное число), под которым они расположены относительно друг друга.
Решение задачи: «Даны 2 отрезка A и B. Вычислить угол в градусах, под которым они расположены друг относительно друга»
textual
Листинг программы
var ax1,ay1,ax2,ay2,bx1,by1,bx2,by2:integer; dx1,dy1,dx2,dy2:integer; a:Real; Begin repeat writeln('Введите координаты концов первого отрезка, целые числа'); readln(ax1,ay1,ax2,ay2); dx1:=ax2-ax1; dy1:=ay2-ay1; if(dx1=0)and(dy1=0)then writeln('Это не отрезок, повторите ввод'); until (dx1<>0)or(dy1<>0); repeat writeln('Введите координаты концов второго отрезка, целые числа'); readln(bx1,by1,bx2,by2); dx2:=bx2-bx1; dy2:=by2-by1; if(dx2=0)and(dy2=0)then writeln('Это не отрезок, повторите ввод'); until (dx2<>0)or(dy2<>0); if dx1*dx2+dy1*dy2=0 then a:=pi/2 else a:=arctan(abs((dx1*dy2-dx2*dy1)/(dx1*dx2+dy1*dy2))); writeLn('Меньший угол между отрезками =',a*180/pi:0:2,' градусов'); readLn; end.
Объяснение кода листинга программы
- Объявление переменных: ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 (координаты концов отрезков), dx1, dy1, dx2, dy2 (разности координат), a (для хранения угла).
- Повторяющийся блок ввода координат концов отрезков с помощью функции readln().
- Проверка, является ли введенная последовательность отрезков корректной (не является точкой).
- Если отрезок корректен, то вычисление разностей координат для обоих отрезков.
- Вычисление угла между отрезками по формуле arctan(abs((dx1dy2-dx2dy1)/(dx1dx2+dy1dy2))).
- Если произведение разностей координат равно нулю, то угол равен 90 градусам.
- Вывод меньшего угла между отрезками в градусах.
- Завершение работы программы с помощью функции readLn().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д