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

Построить треугольник с вершинами в трех из данных n точек, содержащий внутри как можно больше данных точек

24.12.2012, 16:57. Показов 2612. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
доброго времени суток, помогите пожалуйста с программой. Построить треугольник с вершинами в трех из данных n точек, содержащий внутри как можно больше данных точек. заранее большое спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2012, 16:57
Ответы с готовыми решениями:

Построить два треугольника с вершинами в заданном множестве точек на плоскости так, чтобы первый треугольник лежал строго внутри второго
Здравствуйте, помогите пожалуйста решить задачу: Построить два треугольника с вершинами в...

Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек , лежащих внутри и вне m-угольника , минимально различа
Задать n точек. Найти m=3,4... точек и построить на них m-угольник такой что, количество точек ,...

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

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

4
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.12.2012, 18:23 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
uses crt,graph;
const nmax=50;
      t=0.001;{точность сравнения вещественных чисел}
{площадь треугольника по координаьам вершин}
function Plos(x1,y1,x2,y2,x3,y3:real):real;
begin
Plos:=abs((x1-x2)*(y3-y2)-(y1-y2)*(x3-x2))/2;
end;
{принадлежность точки треугольнику}
function Prin(x,y,x1,y1,x2,y2,x3,y3:real):boolean;
var s,s1,s2,s3:real;
begin
s:=Plos(x1,y1,x2,y2,x3,y3);
s1:=Plos(x,y,x1,y1,x2,y2);
s2:=Plos(x,y,x2,y2,x3,y3);
s3:=Plos(x,y,x1,y1,x3,y3);
Prin:=abs(s-s1-s2-s3)<=t;
end;
 
var a:array[1..nmax,1..2] of real;
    x,y,n,i,j,k,m,mx,imx,jmx,kmx,kv:integer;
    ms:real;
    s,s1,s2,s3:string;
begin
clrscr;
randomize;
repeat
write('Kolichestvo tochek ot 5 do ',nmax,' n=');
readln(n);
until n in [5..nmax];
initgraph(x,y,'');
for i:=1 to n do
 begin
  a[i,1]:=-10+20*random;{координаты}
  a[i,2]:=-10+20*random;
 end;
mx:=0; {макс кол-во точек внутри}
imx:=1;{номера вершин с минимальной разницей}
jmx:=2;
kmx:=3;
for i:=1 to n-2 do{выбираем треугольник}
for j:=i+1 to n-1 do
for k:=j+1 to n do
 begin
  kv:=0;{количество внутри}
  for m:=1 to n do
  if not(m in [i,j,k])and {проверякм точки, не вершины треугольника}
  Prin(a[m,1],a[m,2],a[i,1],a[i,2],a[j,1],a[j,2],a[k,1],a[k,2]) then inc(kv);
  if kv>mx then
   begin
    mx:=kv;
    kmx:=k;
    jmx:=j;
    imx:=i;
   end;
  end;
ms:=(getmaxY-50)/20;{масштаб для перевода координат в экранные}
x:=getmaxX div 2;{центр}
y:=getmaxY div 2;
{треугольник}
setcolor(12);
setfillstyle(1,12); {вершины}
circle(x+round(ms*a[imx,1]),y-round(ms*a[imx,2]),3);
floodfill(x+round(ms*a[imx,1]),y-round(ms*a[imx,2]),12);
circle(x+round(ms*a[jmx,1]),y-round(ms*a[jmx,2]),3);
floodfill(x+round(ms*a[jmx,1]),y-round(ms*a[jmx,2]),12);
circle(x+round(ms*a[kmx,1]),y-round(ms*a[kmx,2]),3);
floodfill(x+round(ms*a[kmx,1]),y-round(ms*a[kmx,2]),12);
setcolor(12); {стороны}
line(x+round(ms*a[imx,1]),y-round(ms*a[imx,2]),x+round(ms*a[jmx,1]),y-round(ms*a[jmx,2]));
line(x+round(ms*a[imx,1]),y-round(ms*a[imx,2]),x+round(ms*a[kmx,1]),y-round(ms*a[kmx,2]));
line(x+round(ms*a[kmx,1]),y-round(ms*a[kmx,2]),x+round(ms*a[jmx,1]),y-round(ms*a[jmx,2]));
for i:=1 to n do
if not(i in [imx,jmx,kmx]) then
if Prin(a[i,1],a[i,2],a[imx,1],a[imx,2],a[jmx,1],a[jmx,2],a[kmx,1],a[kmx,2])then
  begin
   setcolor(9);
   setfillstyle(1,9);
   circle(x+round(ms*a[i,1]),y-round(ms*a[i,2]),2);{точки внутри}
   floodfill(x+round(ms*a[i,1]),y-round(ms*a[i,2]),9);
  end
else
  begin
   setcolor(10);
   setfillstyle(1,10);
   circle(x+round(ms*a[i,1]),y-round(ms*a[i,2]),2);{точки снаружи}
   floodfill(x+round(ms*a[i,1]),y-round(ms*a[i,2]),10);
  end;
readln
end.
1
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 6
24.12.2012, 19:40  [ТС] 3
а что у Вас означает function Plos ?
0
0 / 0 / 0
Регистрация: 01.05.2012
Сообщений: 6
28.12.2012, 13:09  [ТС] 4
Puporev, здравствуйте, скажите что означает function Prin(x,y,x1,y1,x2,y2,x3,y3:real):boolean; пожалуйста
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
28.12.2012, 13:25 5
Ну все же написано!!!
Цитата Сообщение от Puporev Посмотреть сообщение
{принадлежность точки треугольнику}
0
28.12.2012, 13:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2012, 13:25
Помогаю со студенческими работами здесь

Определить, из каких трех из данных отрезков можно построить треугольник
1.Окружность на плоскости задана координатами ее центра X, Y и радиусом R. Пусть даны...

Построить такие два треугольника с вершинами в заданном множестве точек на плоскосли, из которых один лежал бы строго внутри другого
Построить такие два треугольника с вершинами в заданном множестве точек на плоскосли, из которых...

Определить, можно ли построить из точек прямоугольный треугольник
Помогите пожалуйста с задачей на C#...Даны три точки на плоскости. Определить, можно ли построить...

Дано множество точек на плоскости. Сколько можно на данном множестве точек построить отрезков, перпендикулярных оси OY
помогите с задачкой Дано множество точек на плоскости. Сколько можно на данном множестве точек...


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

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