Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 7
1

Множества точек на плоскости

02.05.2012, 23:02. Показов 1460. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны два множества точек на плоскости. Из первого множества
выбрать три различные точки так, чтобы треугольник с вершинами в
этих точках содержал (строго внутри себя) равное количества точек
первого и второго множеств.

Добавлено через 30 минут
Delphi
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2012, 23:02
Ответы с готовыми решениями:

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

Задано два множества точек на плоскости
Народ, помогите, пожалуйста с задачей... После завтра сдавать, а не знаю как ее решать( Условие...

Программа нахождения центра множества точек на плоскости
Нужна программа в delphi, нахождения центра множества точек на плоскости.

На плоскости n точек заданы своими координатами. Выявить множества треугольников по заданию
На плоскости n точек заданы своими координатами, и также дана окружность радиуса R с центром в...

3
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2012, 15:16 2
Цитата Сообщение от Zoha Посмотреть сообщение
равное количества точек
первого и второго множеств.
Условие какое-то некорректное, 0=0, 1=1 и т.д.
Если нет точек, то тоже вроде решение, может в условии что-то не так?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.05.2012, 15:28 3
Будем искать максимальное число точек.
Вот простой пример с равным количеством точек в множествах, переделай как нужно, алгоритм не изменится.
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function Prin(a,b,c,t:TPoint):boolean;
var p1,p2,p3:real;
begin
p1:=(a.x-t.x)*(b.y-a.y)-(b.x-a.x)*(a.y-t.Y);
p2:=(b.x-t.x)*(c.y-b.y)-(c.x-b.x)*(b.y-t.Y);
p3:=(c.x-t.x)*(a.y-c.y)-(a.x-c.x)*(c.y-t.y);
result:=((p1>0)and(p2>0)and(p3>0))
or((p1<0)and(p2<0)and(p3<0));
end;
procedure TForm1.Button1Click(Sender: TObject);
const n=15;
var a,b:array[1..n] of TPoint;
    mx,i,j,k,p,k1,k2,i1,j1,k3,k4:integer;
    f:boolean;
begin
randomize;
StringGrid1.Cells[1,0]:='X';
StringGrid1.Cells[2,0]:='Y';
StringGrid2.Cells[1,0]:='X';
StringGrid2.Cells[2,0]:='Y';
for i:=1 to n do
 begin
  StringGrid1.Cells[0,i]:=IntToStr(i);
  StringGrid2.Cells[0,i]:=IntToStr(i);
  a[i].X:=random(20);
  a[i].Y:=random(20);
  StringGrid1.Cells[1,i]:=IntToStr(a[i].X);
  StringGrid1.Cells[2,i]:=IntToStr(a[i].Y);
  b[i].X:=random(20);
  b[i].Y:=random(20);
  StringGrid2.Cells[1,i]:=IntToStr(b[i].X);
  StringGrid2.Cells[2,i]:=IntToStr(b[i].Y);
 end;
mx:=0;
f:=false;
for i:=1 to n-2 do
for j:=i+1 to n-1 do
for k:=j+1 to n do
 begin
  k1:=0;
  k2:=0;
  for p:=1 to n do
   begin
    if Prin(a[i],a[j],a[k],a[p]) then inc(k1);
    if Prin(a[i],a[j],a[k],b[p]) then inc(k2);
   end;
  if(k1>mx)and(k1=k2) then
   begin
    mx:=k1;
    i1:=i;
    j1:=j;
    k3:=k;
    k4:=k1;
   end;
 end;
if mx=0 then Memo1.Text:='Нет треугольников, содержащих точки'
else Memo1.Text:='Максимальное равное число точек имеет треугольник'+#13#10+
                  'с вершинами в точках '+IntToStr(i1)+' '+IntToStr(j1)+' '+IntToStr(k3)+' '+'кол. точ.='+IntToStr(k4);
 
 
 
end;
 
end.
Вложения
Тип файла: zip Множества точек.zip (233.0 Кб, 15 просмотров)
1
0 / 0 / 0
Регистрация: 05.04.2012
Сообщений: 7
07.05.2012, 19:32  [ТС] 4
Всем большое спасибо!
Тему можно закрывать
0
07.05.2012, 19:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2012, 19:32
Помогаю со студенческими работами здесь

Определить радиус и центр такой окружности, проходящей хотя бы через три точки множества точек, что минимальна разность по модулю количества точек, ле
Помогите с программой Условие: На геометрической плоскости дано множество точек. Координаты точек...

На плоскости заданы множество точек М и круг
Здравствуйте.нужно написать программу используя процедуры и функции на Delphi.На плоскости заданы...

На плоскости заданы множество точек М и круг
Здравствуйте.нужно написать программу используя процедуры и функции на Delphi.именно на делфи или...

Построить массив точек на координатной плоскости
Дан массив точек. Необходимо отобразить их на координатной плоскости и соединить точки (получить...

Сколько точек заданного множества содержится в треугольнике
На плоскости задано множество точек с координатами (x1,y1), (x2,y2),...,(xn,yn), n≤200 и...

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


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

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