Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2010, 15:07   #1
shaikan
 
Регистрация: 26.09.2010
Сообщений: 5
По умолчанию Графика в Delphi(Задача на построение линии...).

Постройте прямую, которая найменьше отклоняется от заданых точек P1, P2,...,Pn.
В задаче нужно работать с осью, но как я не могу понять. Обьясните плиз.

Мой никчемный код:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Image1: TImage;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x,y:array[1..100] of integer;
    i,j,k,n,l,k1,l1:integer;
    e1,e2,r1,r2,r3,r4:integer;
begin
n:=strtoint(edit1.Text);                //Количество точек
for i:=1 to n do
  begin
    x[i]:=strtoint(memo1.Lines[i-1]);   //Координаты по X
    y[i]:=strtoint(memo2.Lines[i-1]);   //Координаты по Y
    image1.Canvas.Pixels[x[i],y[i]]:=clred;
  end;
  
e1:=0; e2:=0;
for i:=1 to n do
  begin
  for j:=1 to n do
    begin
    e1:=0; e2:=0;
      for k:=1 to n do
        begin
          if ((x[i]<>x[k])or(y[i]<>y[k])) or((x[j]<>x[k])or(y[j]<>y[k])) then
            begin

              if (x[k]-x[i])/(x[j]-x[i])-(y[k]-y[i])/(y[j]-y[i])>0 then e2:=e2+1;
              if (x[k]-x[i])/(x[j]-x[i])-(y[k]-y[i])/(y[j]-y[i])<0 then e1:=e1+1;
              if (x[k]-x[i])/(x[j]-x[i])-(y[k]-y[i])/(y[j]-y[i])=0 then
                begin e2:=e2+1;   e1:=e1+1; end;
            end;

 if (e1=e2) or (e1=e2+1) or (e1=e2-1) then  begin r1:=i; r2:=i; r3:=j; r4:=j; break; end;

        end;
    end;
  if (e1=e2) or (e1=e2+1) or (e1=e2-1) then break;
  end;

image1.Canvas.MoveTo(r1,r2);//откуда будем рисовать
image1.Canvas.LineTo(r3,r4);// куда будем рисовать
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

end.
Вот ссылка на скачивание кода с формой
http://depositfiles.com/files/c9lul3hwd

Помогите чем сможете

Последний раз редактировалось Stilet; 10.10.2010 в 15:30.
shaikan вне форума Ответить с цитированием
Старый 10.10.2010, 16:21   #2
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

а что значит "наименьше отклоняется от точек" ???
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 10.10.2010, 16:33   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наверное построить аппроксимирующую прямую...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.10.2010, 17:46   #4
shaikan
 
Регистрация: 26.09.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
а что значит "наименьше отклоняется от точек" ???
значит, что подобрать расстаяния между точками так, чтоб оно было найменьшим


Упрощенный вариант задачи звучит так:
Построить прямую, которая проходит через 2 точки так, что б количество точек, которые находятся по одну сторону от прямой были равны количеству точек по другую сторону прямой, или отличались на 1

Последний раз редактировалось shaikan; 10.10.2010 в 17:48.
shaikan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение линии тренда в Excel 2007 Dead Romantic Microsoft Office Excel 2 18.09.2010 17:01
Построение линии тренда в Excel 2007 Dead Romantic Помощь студентам 0 15.09.2010 16:22
Построение графика функций (Delphi) КатюФа Помощь студентам 0 14.05.2010 19:27
Построение графика [Delphi] StudeHt Помощь студентам 7 23.12.2009 21:11
Построение графика в Delphi сер4ей Помощь студентам 0 25.04.2009 15:15