Khabarovsk

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

22.12.2012, 11:53. Показов 568. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребята, помогите решить задачу:

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

я делал вот так:

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
var
myfile2:File of integer;
a1,b1,a,i,j,k,x,y,x1,x2,y1,y2,c,d,e,p1,p2,p3,p4,p5,p6:integer;
l,m,n,q,r,s,t,p,q1,r1,t1,s1,p11,q2,q3,r2,r3,t2,t3,p22,p33,s2,s3:real;
log:boolean;
list1,list2,list3,list4,list5,list6,list7,list8,list9,list10:tstringlist;
begin
list1:=TStringList.Create;
list2:=TStringList.Create;
list3:=TStringList.Create;
list4:=TStringList.Create;
list5:=TStringList.Create;
list6:=TStringList.Create;
list7:=TStringList.Create;
list8:=TStringList.Create;
list9:=TStringList.Create;
list10:=TStringList.Create;
image1.Canvas.Brush.Color := clWhite;
image1.Canvas.FillRect(Canvas.ClipRect);
AssignFile(myFile2, 'coordinates(2).mis');
filemode:=fmOpenReadWrite;
Form2.ShowModal;
reset(myfile2);
while not Eof(myFile2) do
  begin
    Read(myFile2, a1, b1);
    list1.Add(inttostr(a1));
    list2.Add(inttostr(b1));
    image1.Canvas.Pixels[a1,b1]:=clgreen;
end;
closefile(myfile2);
a:=list1.Count;
reset(myfile2);
for i:=0 to a-1 do
begin
x:=strtoint(list1[i]);
y:=strtoint(list2[i]);
for j:=0 to a-1 do
begin
if j<>i then
begin
x1:=strtoint(list1[j]);
y1:=strtoint(list2[j]);
for k:=0 to a-1 do
begin
if (k<>j)and(k<>i) then
begin
x2:=strtoint(list1[k]);
y2:=strtoint(list2[k]);
s:=0.5*((x-x1)*(y1-y2)-(x1-x2)*(y-y2));
c:=0;
while not eof(myfile2) do
begin
read(myfile2, a1, b1);
s1:=0.5*((x-a1)*(y1-b1)-(x1-a1)*(y-b1));
s2:=0.5*((a1-x2)*(y1-y2)-(x1-x2)*(b1-y2));
s3:=0.5*((x-x2)*(b1-y2)-(a1-x2)*(y-y2));
list10.Add(floattostr(s)+'   '+floattostr(s1+s2+s3));
if (s1+s2+s3)=s then
begin
inc(c);
end;
end;
list3.Add(inttostr(c));
list4.add(inttostr(x));
list5.Add(inttostr(y));
list6.add(inttostr(x1));
list7.add(inttostr(y1));
list8.add(inttostr(x2));
list9.Add(inttostr(y2));
end;
end;
end;
end;
end;
d:=0;
for i:=0 to list3.Count-1 do
begin
if d<strtoint(list3[i]) then
begin
d:=strtoint(list3[i]);
e:=i;
end;
end;
p1:=strtoint(list4[e]);
p2:=strtoint(list5[e]);
p3:=strtoint(list6[e]);
p4:=strtoint(list7[e]);
p5:=strtoint(list8[e]);
p6:=strtoint(list9[e]);
image1.Canvas.Pen.Color:=clblack;
image1.Canvas.pen.Width:=3;
image1.Canvas.MoveTo(p1,p2);
image1.canvas.lineto(p3,p4);
image1.canvas.lineto(p5,p6);
image1.canvas.LineTo(p1,p2);
list1.savetofile('text1.txt');
list2.savetofile('text2.txt');
list3.savetofile('text3.txt');
list4.savetofile('text4.txt');
list5.savetofile('text5.txt');
list6.savetofile('text6.txt');
list7.savetofile('text7.txt');
list8.savetofile('text8.txt');
list9.savetofile('text9.txt');
list10.savetofile('text10.txt');
end;
но почему то он не работает))) помогите, может этот надо подправить?))) прошу совета и готового кода))))
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2012, 11:53
Ответы с готовыми решениями:

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

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

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2012, 11:53
Помогаю со студенческими работами здесь

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

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

Выбрать три разные точки А, В, С так, чтобы внутри треугольника АВС содержалось максимальное количество точек
Задача такова : Из заданного множества точек на плоскости выбрать три разные точки А, В, С так, чтобы внутри треугольника АВС содержалось...

Выбрать из множества три разные точки так, чтобы внутри треугольника содержалось максимальное количество точек
Задача такова : Из заданного множества точек на плоскости выбрать три разные точки А В С так, чтобы внутри треугольника АВС содержалось...

Даны 6 чисел. Найти среди них такие три числа, чтобы их сумма была равна 5
Даны 6 чисел. Найти среди них такие три числа, чтобы их сумма была равна 5. Если таких чисел нет, то сообщить об этом. Напишите программу...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru