Нахождение максимального растояния - 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. Он предназначен для решения задачи нахождения максимального расстояния между четырьмя точками, введенными пользователем. Список действий, которые выполняет код:
- Задает функцию Dl, которая вычисляет расстояние между двумя точками на основе их координат.
- Задает константу n, которая определяет количество точек.
- Создает массив t, который будет использоваться для хранения координат точек.
- Запрашивает у пользователя ввод координат четырех точек.
- Выводит введенные координаты.
- Вычисляет максимальное расстояние между точками и сохраняет его в переменной max.
- Находит индексы точек, для которых было вычислено максимальное расстояние, и сохраняет их в переменных imx и jmx.
- Используя функцию Dl, проверяет все возможные пары точек, чтобы найти точки с наибольшим расстоянием от max.
- Выводит максимальное расстояние, индексы точек и рисует окружности и линии на графике.
- Запрашивает у пользователя ввод, чтобы подтвердить, что он хочет продолжить работу с графиком.
- Если пользователь нажимает Enter, программа продолжает работу с графиком, иначе она завершается.
- Программа повторяет шаги 8-11 для всех точек, кроме последней, чтобы нарисовать линии и окружности.
- Если точка с индексом imx совпадает с точкой с индексом jmx, программа рисует красную линию, в противном случае - черную.
- Программа завершается после того, как все линии и окружности были нарисованы.