Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D - PascalABC.NET
Формулировка задачи:
Помогите,пожалуйста,решить задачу.Совсем не получается
Дано множество параллелограммов. Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D.
задаются координатами характерных точек(концов,вершин,центров)
Решение задачи: «Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D»
textual
Листинг программы
type point=record
x,y:real;
end;
prlg=record
a,b,c,d:point;
r:real;
end;
function v4(a,b,c:point):point;
var e:point;
begin
e.x:=(a.x+c.x)/2;
e.y:=(a.y+c.y)/2;
result.x:=2*e.x-b.x;
result.y:=2*e.y-b.y;
end;
function rs(a,b:point):real;
begin
rs:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
end;
var p:array of prlg;
t:point;
n,i,k:integer;
d:real;
begin
randomize;
repeat
write('Введите количество параллелограммов n>1 n=');
readln(n);
until n>1;
setlength(p,n);
for i:=0 to n-1 do
begin
writeln('Параллелограмм ',i+1);
writeln('Введите координаты двух противоположных вершин');
readln(p[i].a.x,p[i].a.y,p[i].c.x,p[i].c.y);
writeln('Введите координаты третьей вершины');
readln(p[i].b.x,p[i].b.y);
p[i].d:=v4(p[i].a,p[i].b,p[i].c);//вычислим координаты 4 вершины
end;
repeat
write('Суммма расстояний от вершин до точки (7,7) d>0 d=');
readln(d);
until d>0;
t.x:=7;
t.y:=7;
k:=0;
writeln('Параллелограммы');
for i:=0 to n-1 do
begin
p[i].r:=rs(p[i].a,t)+rs(p[i].b,t)+rs(p[i].c,t)+rs(p[i].d,t);
write(i+1:2,' A(',p[i].a.x:0:1,',',p[i].a.y:0:1,') B(',p[i].b.x:0:1,',',p[i].b.y:0:1,')');
write(' C(',p[i].c.x:0:1,',',p[i].c.y:0:1,') D(',p[i].d.x:0:1,',',p[i].d.y:0:1,')');
writeln(' сумма расстояний=',p[i].r:0:2);
if p[i].r>d then inc(k);
end;
write('Количество параллелограммов, для которых сумма расстояний 4 вершин до точки (7, 7) больше ',d:0:2,'=',k);
end.
Объяснение кода листинга программы
В данном коде реализуется подсчет количества параллелограммов, для которых сумма расстояний 4 вершин от точки (7, 7) больше D.
- Типы данных:
- point = record x, y: real;
- prlg = record a, b, c, d: point; r: real;
- t: point;
- n, i, k: integer;
- d: real;
- p: array of prlg;
- функция v4(a, b, c: point): point;
- функция rs(a, b: point): real;
- Ввод данных:
- Количество параллелограммов n>1.
- Координаты вершин параллелограмма.
- Сумма расстояний от вершин до точки (7,7) d>0.
- Точка (7,7).
- Вычисления:
- Координаты четвертой вершины параллелограмма вычисляются с помощью функции v4(a, b, c: point).
- Расстояние между двумя точками вычисляется с помощью функции rs(a, b: point).
- Организация цикла:
- Цикл повторяется до тех пор, пока не будет введено корректное значение d.
- Цикл по i для каждого параллелограмма.
- Вывод данных:
- Координаты вершин параллелограмма.
- Сумма расстояний от вершин до точки (7,7) для каждого параллелограмма.
- Если сумма расстояний больше d, то увеличивается счетчик k.
- В конце выводится количество параллелограммов, для которых сумма расстояний 4 вершин до точки (7, 7) больше d.