![]() |
|
|
|
|
#1
|
|||
|
|||
|
необходимо найти максимальное х и максимальное у провести через них прямую линию, а затем найти минимальное х и у и тоже провести через них прямые линии в результате точки будут заключены в прямоугольник. необходима помощь в реализации этой задумкиглавная.rar
|
|
#2
|
|||
|
|||
|
А я не понимаю, в чем проблема?
Ну есть у тебя, например, массив точек. Поиск мин и макс значений - один цикл. Соотв. получаешь 4 значения. |
|
#3
|
||||
|
||||
|
Цитата:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series,
BubbleCh;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Sg: TStringGrid;
Label2: TLabel;
Label3: TLabel;
Button2: TButton;
Button3: TButton;
Chart1: TChart;
Series1: TPointSeries;
Button4: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Sg, Edit1 do
begin
ColCount := StrToIntDef(Text, Sg.ColCount);
end;
end;
procedure TForm1.Button2Click(Sender: TObject); {заполнение из файла}
var List: TStringList;
i, j: Integer;
begin
List := TStringList.Create;
List.LoadFromFile('Таблица.txt');
with Form1.Sg do
for i := 0 to RowCount - 1 do
for j := 0 to ColCount - 1 do
Cells[j, i] := List[i * ColCount + j];
List.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
begin
if Series1 = nil then begin
Series1 := TPointSeries.Create(Chart1);
Series1.ParentChart := Chart1
end
else Series1.clear;
with Form1.Sg do
for i := 0 to ColCount - 1 do
Series1.AddXY(strtoint(cells[i, 0]), strtoint(cells[i, 1]));
{поиск максимума}
end;
procedure TForm1.Button4Click(Sender: TObject);
var i,j:integer;
temp,max:integer;
begin
{поиск максимума x и y и провести через них прямые}
temp:=0;
max:=strtoint(sg.cells[0,0]);
for i:=0 to sg.rowcount-1 do {i- номер столбца}
for j:=0 to sg.colcount-1 do {j - номер строки }
begin
temp:= strtoint(sg.cells[j,i]);
if temp>max then
max:=temp;
end;
end;
end.
Последний раз редактировалось Admin, 23.04.2012 в 21:14. |
|
#4
|
|||
|
|||
|
горю просто надо срочно доделать! а я не знаю как это реализовать притом что это еще не конец программы. когда заключили точки в прямоугольник его нужно разбить на несколько вот так Безымянный.JPG а потом по алгоритму мелзака в каждом из прямоугольников найти точку штейнера Пример 1.rar. затем повторить все это еще раз пока не найдется одна точка. очень прошу оказать помощь а то я просто пропадаю!!!!
|
|
#5
|
|||
|
|||
|
нашла минимумы и максимумы а как через них провести прямые не знаю подскажите пожалуйста!главная.rar
|
|
#6
|
|||
|
|||
|
Цитата:
Код:
Canvas.MoveTo(Xmin,Ymin); Canvas.LineTo(Xmax,YMin); Canvas.LineTo(Xmax,Ymax); Canvas.LineTo(Xmin,Ymax); Canvas.LineTo(Xmin,Ymin); |
|
#7
|
|||
|
|||
|
надо чтобы рисовалось в chart
|