function SqrDist(p, q: integer): real; { Возвращает квадрат расстояния между точками } begin SqrDist := sqr(x[q] - x[p]) + sqr(y[q] - y[p]) end;
begin Write('Введите количество точек -> '); Readln(n); Writeln('Вводите координаты каждой точки (x,y) через пробел'); for i := 1 to n do begin Write('точка ', i, ': '); Readln(x[i], y[i]); end; dmin := 1e10; { значение, заведомо большее реально возможного } for i := 1 to n do for j := i + 1 to n do begin d := SqrDist(i, j); if dmin > d then dmin := d end; Writeln('Минимальное расстояние между точками равно ', sqrt(dmin):0:4) end.
Тестовое решение:
Введите количество точек -> 5 Вводите координаты каждой точки (x,y) через пробел точка 1: 3.4 7.2 точка 2: -3 8.6 точка 3: -4.5 -5.1 точка 4: 6 -2 точка 5: 0 9 Минимальное расстояние между точками равно 3.0265
Пусть Д – драмкружок, Х – хор, С – спорт.Тогда в круге Д – 27 ребят, в круге Х – 32 человека, в круге С – 22 ученика.Те 10 ребят из драмкружка, которые поют в хоре, окажутся в общей части кругов Д и X. Трое из них ещё и спортсмены, они окажутся в общей части всех трёх кругов. Остальные семеро спортом не увлекаются. Аналогично, 8 – 3 = 5 спортсменов, не поющих в хоре и 6 – 3 = 3, не посещающих драмкружок.Легко видеть, что 5 + 3 + 3 = 11 спортсменов посещают хор или драмкружок,22 – (5 + 3 + 3) = 11 занимаются только спортом; 70 – (11 + 12 + 19 + 7 + 3 + 3 + 5) = 10 – не поют в хоре, не занимаются в драмкружке, не увлекаются спортом.ответ: 10 человек и 11 человек.
nm = 50;{максимальная длина массива}
type
Mas = array[1..nm] of real;
var
i, j, n: integer;
x, y: Mas;
d, dmin: real;
function SqrDist(p, q: integer): real;
{ Возвращает квадрат расстояния между точками }
begin
SqrDist := sqr(x[q] - x[p]) + sqr(y[q] - y[p])
end;
begin
Write('Введите количество точек -> ');
Readln(n);
Writeln('Вводите координаты каждой точки (x,y) через пробел');
for i := 1 to n do
begin
Write('точка ', i, ': ');
Readln(x[i], y[i]);
end;
dmin := 1e10; { значение, заведомо большее реально возможного }
for i := 1 to n do
for j := i + 1 to n do
begin
d := SqrDist(i, j);
if dmin > d then dmin := d
end;
Writeln('Минимальное расстояние между точками равно ', sqrt(dmin):0:4)
end.
Тестовое решение:
Введите количество точек -> 5
Вводите координаты каждой точки (x,y) через пробел
точка 1: 3.4 7.2
точка 2: -3 8.6
точка 3: -4.5 -5.1
точка 4: 6 -2
точка 5: 0 9
Минимальное расстояние между точками равно 3.0265