Даны 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.

Объяснение кода листинга программы

  1. Объявление переменных: ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 (координаты концов отрезков), dx1, dy1, dx2, dy2 (разности координат), a (для хранения угла).
  2. Повторяющийся блок ввода координат концов отрезков с помощью функции readln().
  3. Проверка, является ли введенная последовательность отрезков корректной (не является точкой).
  4. Если отрезок корректен, то вычисление разностей координат для обоих отрезков.
  5. Вычисление угла между отрезками по формуле arctan(abs((dx1dy2-dx2dy1)/(dx1dx2+dy1dy2))).
  6. Если произведение разностей координат равно нулю, то угол равен 90 градусам.
  7. Вывод меньшего угла между отрезками в градусах.
  8. Завершение работы программы с помощью функции readLn().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы