Нахождение максимального растояния - PascalABC.NET

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

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

Подскажите, почему программа то работает, то нет? Что не так? И если 0 вводить, то всё завершается.

Решение задачи: «Нахождение максимального растояния»

textual
Листинг программы
program z3;
uses GraphABC;
function Dl(x1, x2, y1, y2: integer): real;
begin
   Dl :=Sqrt(sqr(x2 - x1) + sqr(y2 - y1));//зачем модуль?
end;
const n = 4;
var  i,j,imx,jmx: integer;
     t: array[1..2, 1..n] of integer;
     max: real;
begin
setwindowsize(400,400);
centerwindow;
writeln('vvedite koordinaty ', n, ' tochek ot 2 do 398');
for i := 1 to n do 
repeat
readln(t[1, i],t[2,i]);
until(t[1,i]>1)and(t[1,i]<399)and(t[2,i]>1)and(t[2,i]<399);
writeln('danbI koordin.:');
write('X');
for j := 1 to n do 
write(t[1, j]:4);
writeln;
write('Y');
for j := 1 to n do 
write(t[2, j]:4);
writeln;
max:=Dl(t[1, 1], t[2, 1], t[1, 2], t[2, 2]);
imx := 1;
jmx := 2;
for i := 1 to n - 1 do
for j := i + 1 to n do 
if Dl(t[1, i], t[2, i], t[1, j], t[2, j])>max then
 begin
  max := Dl(t[1, i], t[2, i], t[1, j], t[2, j]);
  imx := i;
  jmx := j;
 end;
writeln('max.dlina=', max:0:2);
writeln(imx, '(', t[1, imx], ';', t[2, imx], ')');
writeln(jmx, '(', t[1, jmx], ';', t[2, jmx], ')');
write('Press Enter');
readln;
clearwindow; 
for i := 1 to n do
 begin
  Circle(t[1, i], t[2, i], 2);
  textout(t[1, i]+10, t[2, i],inttostr(i));
 end; 
for i:=1 to n-1 do
for j:=i+1 to n do
 begin
  if(i=imx)and(j=jmx) then setpencolor(clRed)
  else setpencolor(clBlack); 
  line(t[1,i], t[2,i], t[1,j], t[2,j]);
 end;
   
end.

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

В этом коде используется язык программирования PascalABC.Net. Он предназначен для решения задачи нахождения максимального расстояния между четырьмя точками, введенными пользователем. Список действий, которые выполняет код:

  1. Задает функцию Dl, которая вычисляет расстояние между двумя точками на основе их координат.
  2. Задает константу n, которая определяет количество точек.
  3. Создает массив t, который будет использоваться для хранения координат точек.
  4. Запрашивает у пользователя ввод координат четырех точек.
  5. Выводит введенные координаты.
  6. Вычисляет максимальное расстояние между точками и сохраняет его в переменной max.
  7. Находит индексы точек, для которых было вычислено максимальное расстояние, и сохраняет их в переменных imx и jmx.
  8. Используя функцию Dl, проверяет все возможные пары точек, чтобы найти точки с наибольшим расстоянием от max.
  9. Выводит максимальное расстояние, индексы точек и рисует окружности и линии на графике.
  10. Запрашивает у пользователя ввод, чтобы подтвердить, что он хочет продолжить работу с графиком.
  11. Если пользователь нажимает Enter, программа продолжает работу с графиком, иначе она завершается.
  12. Программа повторяет шаги 8-11 для всех точек, кроме последней, чтобы нарисовать линии и окружности.
  13. Если точка с индексом imx совпадает с точкой с индексом jmx, программа рисует красную линию, в противном случае - черную.
  14. Программа завершается после того, как все линии и окружности были нарисованы.

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


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

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

8   голосов , оценка 3.875 из 5
Похожие ответы