Подсчитать параллелограммы, для которых сумма расстояний 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д