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

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

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

code: #pascal
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.      
Поделиться:

Похожие статьи: