Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 10.03.2016
Сообщений: 14
1

Найти две такие различные точки из А, что проходящая через них прямая пересекается максимальным количеством окружностей

29.02.2012, 20:41. Показов 2830. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Надо составить прогу. На плоскости заданны множество точек А и множество окружностей В (каждая окружность задается значениями координат центра и радиуса). Найти две такие различные точки из А, что проходящая через них прямая пересекается максимальным количеством окружностей из В. Не могу придумать алгоритм(
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2012, 20:41
Ответы с готовыми решениями:

Найдите две точки, что проходящая через них прямая пересекается с максимальным количеством окружностей
Завтра должны сдать лабораторные, не осилил данную задачу. Даже представление не имею как ее...

Найти точки, проходящая через которые прямая пересекает наибольшее число окружностей
На плоскости заданы множество точек А и множество окружностей В. Найти две такие различные точки из...

Круг, множество точек, прямая проходящая через две точки и через центр круга
плиз хелп. Нужно вывести координаты двух точек. #include <stdio.h> #include <math.h> #include...

Прямая проходящая через множество окружностей
Доброго Времени суток! Есть задача, несколько раз встречавшаяся на форуме, но ниразу не решенная...

1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.02.2012, 20:59 2
Лучший ответ Сообщение было отмечено как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
uses crt;
type point=record
           x,y:real;
           end;
     okr=record
         x,y,r:real;
         end;
const nmax=20;
{функция определяет пересекается прямая с окружностью или нет}
function Peres(a,b:point;c:okr):boolean;
var s,ab,h:real;
begin
{строим треугольник на точках прямой о центре окружности
определяем его площадь, длину стороны на прямой и высоту на нее}
s:=abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y));
ab:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
h:=s/ab;
Peres:=h<c.r;{если высота меньше радиуса, перемекаются}
end;
var a:array[1..nmax] of point;{множество точек}
    b:array[1..nmax] of okr;{множество окружностей}
    n,m,i,j,k,p,mx,imx,jmx:integer;
begin
clrscr;
randomize;
repeat
write('Количество точек до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество окружностей до ',nmax,' m=');
readln(m);
until m in [1..nmax];
for i:=1 to n do
 begin
  a[i].x:=-10+random*21;
  a[i].y:=-10+random*21;
 end;
for i:=1 to m do
 begin
  b[i].x:=-5+11*random;
  b[i].y:=-5+11*random;
  b[i].r:=5*random;
 end;
writeln('Координаты точек:');
write('X:');
for i:=1 to n do
write(a[i].x:6:2);
writeln;
write('Y:');
for i:=1 to n do
write(a[i].y:6:2);
writeln;
writeln;
writeln('Параметры окружностей:');
write('X:');
for i:=1 to m do
write(b[i].x:6:2);
writeln;
write('Y:');
for i:=1 to m do
write(b[i].y:6:2);
writeln;
write('R:');
for i:=1 to m do
write(b[i].r:6:2);
writeln;
writeln;
{ищем прямую с максимальными пересечениями}
mx:=0;
imx:=0;
jmx:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
 begin
  k:=0;
  for p:=1 to m do
  if Peres(a[i],a[j],b[p]) then k:=k+1;
  if k>mx then
   begin
    mx:=k;
    imx:=i;
    jmx:=j;
   end;
 end;
if mx=0 then write('Нет пересекающихся прямых и окружностей')
else
 begin
  writeln('Максимальное число пересечений прямой с окружностями=',mx);
  write('Эта прямая проходит через точки (',a[imx].x:0:2,';',a[imx].y:0:2,') и (',a[jmx].x:0:2,';',a[jmx].y:0:2,')');
 end;
readln
end.
2
29.02.2012, 20:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.02.2012, 20:59
Помогаю со студенческими работами здесь

На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них окружность делила это множество на группы
На плоскости задано множество точек. Выбрать три различные точки так, чтобы проходящая через них...

Будет ли прямая, проходящая через 2 точки, параллельна оси
Помогите пожалуйста 1. Создайте структуру, описывающую точку в двумерной системе координат (x,...

Доказать, что прямая, проходящая через вершину B и середину отрезка OC, делит сторону CD на отрезки 2 к 1
Здравствуйте. Наткнулся на вот такую вот задачу. Диагонали параллелограмма ABCD пересекаются в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru