Задача такова: Дан файл вещественных чисел,которые являются координатами точек. Нужно найти такие 3 точки, что треугольник, построенный на этих точках будет содержать максимальное количество точек множества. Координаты этих трёх точек сохранить в файле, как результат +нужна графическая иллюстрация к этой задаче.
Предложите,пожалуйста,варианты решения этой задачи или какие-нибудь идеи. У меня они пока не могут оформиться...
с удалением и изменением я разобралась. только вот точки треугольника находятся явно неправильно.
что-то не то либо в процедуре поиска точек нужного координат:
var popal,max,xp,x1,x2,x3,x1_max,x2_max,x3_max,i:byte; begin max:=0; x1_max:=1; x2_max:=2; x3_max:=3; for x1:=1 to kol-2 do {точка 1} for x2:=x1+1 to kol-1 do {точка 2} for x3:=x2+1 to kol do {точка 3} begin popal:=0; for xp:=1 to kol do {перебор всех точек} if posession(xp,x1,x2,x3)=true then inc(popal); if popal>max then begin max:=popal; x1_max:=x1; x2_max:=x2; x3_max:=x3; end; end; i:=1; while i<>kol do begin if i=x1_max then begin x1_res:=point[i].x; y1_res:=point[i].y; end; if i=x2_max then begin x2_res:=point[i].x; y2_res:=point[i].y; end; if i=x3_max then begin x3_res:=point[i].x; y3_res:=point[i].y; end; inc(i); end; end;
либо в проверке условия принадлежности точки треугольнику:
//принадлежность точки треугольнику function posession(x,t1,t2,t3:byte):boolean; begin if square(line(t1,t2),line(t2,t3),line(t3,t1))=square(line(x,t1),line(t1,t2),line(t 2,x))+square(line(x,t2),line(t2,t3),line(t3,x))+square(line(x,t1),line(t1,t3),li ne(t3,x)) then posession:=true else posession:=false; end;