Сформировать массив расстояний от школы до каждого дома. Найти номер дома с минимальным расстоянием от школы — Pascal(Паскаль)

Программа получает из файла данные о координатах школы (sx и sy) и n домов микрорайона (x1, y1, x2, y3, … , xn, yn).

Cтруктура файла «f.txt» такова:
В первой строке указываем два числа – «координаты школы»
На второй строке пишем число N
Следующие N строк – это координаты соответствующих домов

program gs;

type
  xy = record { запись для массива с X,Y координатами }
    x: real; { координата Х }
    y: real; { координата Y }
  end;

var
  f: text; { переменная файла }
  cx, cy: real; { переменные координат школы }
  n, i: integer;
  m1: array [1 .. 100] of xy; { массив с координатами домов }
  rast: array [1 .. 100] of real; { массив с расстояниями }
  min: real; { переменная минимального расстояния }
  rmin: integer; { переменная номера дома, где МИН расстояние }

begin
  assign(f, 'f.txt');
  reset(f); { открываем файл для чтения }
  readln(f, cx, cy); { считываем с файла коордиенаты школы }
  readln(f, n); { считываем с файла кол-во доммов }
  for i := 1 to n do
    readln(f, m1[i].x, m1[i].y); { считываем с файла координаты домов }

  for i := 1 to n do
    rast[i] := sqrt(sqr(m1[i].x - cx) + sqr(m1[i].y - cy));
  { вычисляем расстояниЯ от школы к домам }

  writeln('Vsego ', n, ' domov mikroraiona'); { выводим на экран кол-во домов }
  writeln('Massiv rasstoyanii ot shkoly do kazhdogo doma:');
  for i := 1 to n do
    writeln(rast[i]:0:2); { выводим массив с расстояниями }

  min := rast[1]; { ***начало вычисления МИНИМ растояния*** }
  for i := 2 to n do
    if rast[i] < min then
    begin
      min := rast[i];
      rmin := i;
    end; { ***конец вычисления МИНИМ растояния*** }

  writeln('Nomer doma s minimalinym (', min:0:2,
    ') rasstoyaniem ot shkoly: ', rmin);

  close(f);
  readln;

end.

Leave a Comment