Окружность задается радиусом и координатами центра - Free Pascal
Формулировка задачи:
Окружность задается радиусом и координатами центра. Определить, найдется ли среди данных десяти окружностей окружность, лежащая внутри данной окружности.
Написать с использованием подпрограмм. Заранее БОЛЬШОЕ спасибо.
Решение задачи: «Окружность задается радиусом и координатами центра»
textual
Листинг программы
const n=10;
function inside(x0,y0,r0,x,y,r:real):boolean;
begin
inside:=sqr(x0-x)+sqr(y0-y)<=sqr(r0-r)
end;
var x0,y0,r0,x,y,r:real;
t:array[1..3,1..n] of real;
i,k:byte;
begin
randomize;
repeat
writeln('Введите кооординаты центра от -10 до 10 и радиус от 1 до 10 основной окружности');
readln(x0,y0,r0);
until(x0>=-10)and(x0<=10)and(y0>=-10)and(y0<=10)and(r0>=1)and(r0<=10);
for i:=1 to n do
begin
t[1,i]:=-10+random*(20);
t[2,i]:=-10+random*(20);
t[3,i]:=random*(10);
end;
writeln('Параметры окружностей');
for i:=1 to n do
begin
write(i:2,'(x=',t[1,i]:5:2,' y=',t[2,i]:5:2,' r=',t[3,i]:5:2,') ');
if i mod 2=0 then writeln;
end;
k:=0;
i:=1;
while(i<=n)and(k=0) do
if inside(x0,y0,r0,t[1,i],t[2,i],t[3,i]) then k:=i
else inc(i);
if k=0 then write('Нет окружности внутри данной')
else write('Есть окружности внутри данной, например окружность номер ',k)
end.
Объяснение кода листинга программы
- В начале кода объявлены следующие переменные:
- x0, y0, r0 - координаты центра и радиус основной окружности;
- x, y, r - переменные для проверки вхождения точки в окружность;
- t - массив для хранения координат точек на окружностях;
- i, k - счётчики для обхода массива и поиска окружности.
- С помощью цикла repeat-until считываются координаты центра и радиус основной окружности.
- С помощью цикла for генерируются случайные координаты точек на окружностях и записываются в массив t.
- С помощью цикла for выводятся параметры окружностей.
- С помощью цикла while-i проверяется, есть ли окружности внутри заданной. Если есть, то выводится номер такой окружности.
- Если окружность не найдена, выводится сообщение
Нет окружности внутри данной. - Если окружность найдена, то выводится сообщение
Есть окружности внутри данной, например окружность номер k.