Определить, принадлежит ли точкам M(x,y) кругу радиуса R с центром в точке O(a,b) - Turbo Pascal
Формулировка задачи:
Определить, принадлежит ли точкам M(x,y) кругу радиуса R с центром в точке O(a,b). Если – да, найти расстояние между точками M(x,y) и O(a,b).
Решение задачи: «Определить, принадлежит ли точкам M(x,y) кругу радиуса R с центром в точке O(a,b)»
textual
Листинг программы
uses crt;
type point=record
x,y:real;
end;
function rasst(a,b:point):real;
begin
rasst:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
end;
var m,n,o:point;
r,s:real;
t:boolean;
begin
clrscr;
writeln('Введите координаты точки M');
readln(m.x,m.y);
writeln('Введите координаты точки N');
readln(n.x,n.y);
writeln('Введите координаты точки O');
readln(o.x,o.y);
repeat
write('Введите радиус круга R>0 R=');
readln(r);
until r>0;
t:=(rasst(m,o)<=r)and(rasst(n,o)<=r);
if t then
begin
writeln('Точки M,N принадлежат кругу');
write('Расстояние между ними=',rasst(m,n):0:2);
end
else writeln('Не обе точки принадлежат кругу');
readln
end.
Объяснение кода листинга программы
- Создается тип данных
pointс полямиxиyдля хранения координат точек. - Определяется функция
rasst, которая вычисляет расстояние между двумя точками, используя формулу расстояния между двумя точками на плоскости. - Объявляются переменные
m,nиoтипаpointдля хранения координат точек M, N и O соответственно. - Объявляется переменная
rдля хранения радиуса круга. - Запускается цикл чтения координат точек M, N и O.
- Проверяется, что введенный радиус круга больше нуля.
- Проверяется, что обе точки (M и N) принадлежат кругу, используя функцию
rasst. - Если условие выполняется, выводится сообщение о том, что точки M и N принадлежат кругу, а также расстояние между ними.
- Если условие не выполняется, выводится сообщение о том, что хотя бы одна из точек не принадлежит кругу.
- Программа завершается после ввода всех данных.