Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D - PascalABC.NET

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

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

Помогите,пожалуйста,решить задачу.Совсем не получается Дано множество параллелограммов. Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D.
задаются координатами характерных точек(концов,вершин,центров)

Решение задачи: «Подсчитать параллелограммы, для которых сумма расстояний 4 вершин от точки (7, 7) больше D»

textual
Листинг программы
  1. type point=record
  2.            x,y:real;
  3.            end;
  4.       prlg=record
  5.            a,b,c,d:point;
  6.            r:real;
  7.            end;
  8. function v4(a,b,c:point):point;  
  9. var e:point;
  10. begin
  11. e.x:=(a.x+c.x)/2;
  12. e.y:=(a.y+c.y)/2;
  13. result.x:=2*e.x-b.x;
  14. result.y:=2*e.y-b.y;
  15. end;    
  16. function rs(a,b:point):real;
  17. begin
  18. rs:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
  19. end;  
  20. var p:array of prlg;
  21.     t:point;  
  22.     n,i,k:integer;
  23.     d:real;
  24. begin
  25. randomize;
  26. repeat
  27. write('Введите количество параллелограммов n>1 n=');
  28. readln(n);
  29. until n>1;
  30. setlength(p,n);
  31. for i:=0 to n-1 do
  32.  begin
  33.   writeln('Параллелограмм ',i+1);
  34.   writeln('Введите координаты двух противоположных вершин');
  35.   readln(p[i].a.x,p[i].a.y,p[i].c.x,p[i].c.y);
  36.   writeln('Введите координаты третьей вершины');
  37.   readln(p[i].b.x,p[i].b.y);
  38.   p[i].d:=v4(p[i].a,p[i].b,p[i].c);//вычислим координаты 4 вершины
  39.  end;
  40. repeat
  41. write('Суммма расстояний от вершин до точки (7,7) d>0 d=');
  42. readln(d);
  43. until d>0;
  44. t.x:=7;
  45. t.y:=7;
  46. k:=0;
  47. writeln('Параллелограммы');
  48. for i:=0 to n-1 do
  49.  begin
  50.   p[i].r:=rs(p[i].a,t)+rs(p[i].b,t)+rs(p[i].c,t)+rs(p[i].d,t);
  51.   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,')');
  52.   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,')');
  53.   writeln(' сумма расстояний=',p[i].r:0:2);
  54.   if p[i].r>d then inc(k);
  55.  end;
  56. write('Количество параллелограммов, для которых сумма расстояний 4 вершин до точки (7, 7) больше ',d:0:2,'=',k);
  57. end.

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

В данном коде реализуется подсчет количества параллелограммов, для которых сумма расстояний 4 вершин от точки (7, 7) больше D.

  1. Типы данных:
    • 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;
  2. Ввод данных:
    • Количество параллелограммов n>1.
    • Координаты вершин параллелограмма.
    • Сумма расстояний от вершин до точки (7,7) d>0.
    • Точка (7,7).
  3. Вычисления:
    • Координаты четвертой вершины параллелограмма вычисляются с помощью функции v4(a, b, c: point).
    • Расстояние между двумя точками вычисляется с помощью функции rs(a, b: point).
  4. Организация цикла:
    • Цикл повторяется до тех пор, пока не будет введено корректное значение d.
    • Цикл по i для каждого параллелограмма.
  5. Вывод данных:
    • Координаты вершин параллелограмма.
    • Сумма расстояний от вершин до точки (7,7) для каждого параллелограмма.
    • Если сумма расстояний больше d, то увеличивается счетчик k.
    • В конце выводится количество параллелограммов, для которых сумма расстояний 4 вершин до точки (7, 7) больше d.

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


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

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

11   голосов , оценка 4.182 из 5

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

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

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