Сформировать массив расстояний от школы до каждого дома. Найти номер дома с минимальным расстоянием от школы
Категория: Delphi/Pascal
2012-02-06 21:40:59
Программа получает из файла данные о координатах школы (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.
Поделиться: