Определить, пересекаются ли окружности, в этом случае вычислить координаты точек их пересечения - Pascal

Узнай цену своей работы

Формулировка задачи:

Даны две окружности одинакового радиуса R , заданные координатами их центров (X1Y1) (X2Y2) -целыми числами. Определить пересекаются ли они, в этом случае вычислить координаты, (вещественные числа)точек их пересечения

Решение задачи: «Определить, пересекаются ли окружности, в этом случае вычислить координаты точек их пересечения»

textual
Листинг программы
  1. const e=0.0001;
  2. var x1,y1,x2,y2,r:integer;
  3.     x,y,a,h,d,x3,y3,x4,y4:real;
  4. begin
  5. writeln('Введите координаты центра 1 окружности, целые цисла');
  6. write('x1=');readln(x1);
  7. write('y1=');readln(y1);
  8. writeln('Введите координаты центра 2 окружности, целые числа');
  9. write('x2=');readln(x2);
  10. write('y2=');readln(y2);
  11. repeat
  12. write('Введите радиус окружностей r>0 r=');
  13. readln(r);
  14. until r>0;
  15. if (x1=x2)and(y1=y2)then write('Окружности совпадают')
  16. else
  17.  begin
  18.   d:=sqrt(sqr(x1-x2)+sqr(y1-y2));//расстояние между центрами
  19.   if d>2*r then write('Точек пересечения нет')
  20.   else if abs(d-2*r)<e then
  21.    begin
  22.     writeln('Окружности касаются в точке:');
  23.     x3:=(x1+x2)/2;
  24.     y3:=(y1+y2)/2;
  25.     writeln('x=',x3:0:2,'  y=',y3:0:2);
  26.    end
  27.   else
  28.    begin
  29.     a:=d/2;
  30.     h:=sqrt(sqr(r)-sqr(a));
  31.     x:=x1+a*(x2-x1)/d;
  32.     y:=y1+a*(y2-y1)/d;
  33.     x3:=x-(y2-y1)*h/d;
  34.     y3:=y+(x2-x1)*h/d;
  35.     x4:=x+(y2-y1)*h/d;
  36.     y4:=y-(x2-x1)*h/d;
  37.     writeln('Точки пересечения:');
  38.     writeln('1:x=',x3:0:2,'  y=',y3:0:2);
  39.     writeln('2:x=',x4:0:2,'  y=',y4:0:2);
  40.    end;
  41.   end;
  42. end.

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

  1. Константа e устанавливается равной 0.0001;
  2. Объявляются переменные:
    • x1, y1, x2, y2, r - целочисленные координаты центров и радиус окружностей;
    • x, y, a, h, d, x3, y3, x4, y4 - вещественные переменные для вычислений координат точек пересечения;
  3. Вводятся координаты центра первой и второй окружностей x1, y1, x2, y2;
  4. Вводится радиус окружностей r (проверяется, что он больше 0);
  5. Проверяется, совпадают ли центры окружностей. Если да, то выводится сообщение Окружности совпадают;
  6. Если центры окружностей не совпадают, то вычисляется расстояние между центрами d;
  7. Если расстояние между центрами больше чем сумма радиусов, выводится сообщение Точек пересечения нет;
  8. Если расстояние между центрами равно сумме радиусов с погрешностью e, выводятся координаты точки касания;
  9. Во всех остальных случаях вычисляются координаты двух точек пересечения и выводятся эти координаты.

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


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

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

12   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы