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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2012, 13:52   #1
BuSiNkA_Lapochka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 15
По умолчанию Задача Штейнера

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

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var    a,b,c,d,e,f,l,m: tpoint;
k,i:integer;
begin        {заполнили белам фон}
form1.Canvas.Brush.Color := clWhite;
form1.Canvas.FillRect(form1.ClientRect);
 {задали случайно 10 точек}
for k:=1 to 10 do
canvas.Pixels[random(50),random(50)]:= clred;
{определим координаты точек}


end;

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось BuSiNkA_Lapochka; 03.04.2012 в 14:23.
BuSiNkA_Lapochka вне форума Ответить с цитированием
Старый 03.04.2012, 14:26   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

закидываем рандомные числа в массив... и затем выводим их на канвас... )))
а иначе наверное по отрисованному только если сканить каждый пиксель канваса и сравнивать... с основным цветом...
Код:
 {задали случайно 10 точек}
for i := 1 to 10 do
begin
   a[i,1] := random(50);
   a[i,2] := random(50);
end;
for k:=1 to 10 do
canvas.Pixels[a[i,1],a[i,2]]:= clred;
p.s. массив двумерный... )
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 03.04.2012, 14:32   #3
BuSiNkA_Lapochka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 15
По умолчанию

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

1. Задаются начальные точки n случайным образом.
2. Определяются их координаты на плоскости (х,у)
3. Определяется самое наибольшее и наименьшее значение х, проводиться прямая параллельная оси ОХ
4. Определяется самое наибольшее и наименьшее значение у, проводиться прямая параллельная оси ОУ
5. Полученный прямоугольник разбивается на к=9 прямоугольников
6. В каждом из прямоугольников ищется точка штейнера с помощью адаптивного алгоритма
7. В результате получаем n=9 точек Штейнера
8. Определяются их координаты на плоскости (х,у)
9. Определяется самое наибольшее и наименьшее значение х, проводиться прямая параллельная оси ОХ
10. Определяется самое наибольшее и наименьшее значение у, проводиться прямая параллельная оси ОУ
11. Полученный прямоугольник разбивается на l=k-3 прямоугольников
12. В каждом из прямоугольников ищется точка штейнера с помощью адаптивного алгоритма
13. В результате получаем n=6 точек Штейнера
14. Далее выполняем шаги 2 – 4.
15. Полученный прямоугольник разбивается на l=k-6 прямоугольников
16. В каждом из прямоугольников ищется точка штейнера с помощью адаптивного алгоритма
17. В результате получаем n=3 точки Штейнера
18. Далее выполняем шаги 2 – 4.
19. В полученном прямоугольнике ищем точку Штейнера с помощью адаптивного алгоритма
20. В результате получаем искомую точку.
BuSiNkA_Lapochka вне форума Ответить с цитированием
Старый 03.04.2012, 14:50   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

сама идея в задании... все поэтапно... по пунктам...)) как и написано...)
заносить данные в массивы... выбирать максимумы... рисование этого... ну и сам подсчет точки Штейнера... неведомый мне.. его лучше всего занести в функцию... да и не только его...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 03.04.2012, 14:59   #5
BuSiNkA_Lapochka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 15
По умолчанию

А как найти максимумы и провести через них прямые?
BuSiNkA_Lapochka вне форума Ответить с цитированием
Старый 03.04.2012, 15:18   #6
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

получение максимальных значений координат... из двумерного массива где они и хранятся...
Код:
xmax := mas[1,1];
ymax := mas[1,2];
for i:= 1 to n do
begin
if xmax < mas[i,1] then
   xmax := mas[i,1];
if ymas < mas[i,2] then
   ymax := mas[i,2];
end;
ну и собственно рисование...
Код:
Canvas.MoveTo(xmax, ymax); // параллель ОУ
Canvas.LineTo(xmax, 0);

Canvas.MoveTo(xmax, ymax); // параллель ОХ
Canvas.LineTo(0, ymax);
если с координатами ничего не напутал...)
ну и цвет линий задается так, само собой перед нарисовкой линии...)
Код:
Canvas.Pen.Color := clLime; // лаймовый цвет...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 03.04.2012, 15:41   #7
BuSiNkA_Lapochka
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 15
По умолчанию

СПАСИБО огромнейшее все работает )))))))))
BuSiNkA_Lapochka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о станках Задача Джонсона Aiga Помощь студентам 4 05.02.2012 21:48
Задача о стрелках (задача Майхелла) Silly Student Помощь студентам 0 14.12.2011 22:20
Задача на оптимальный расчет маршрута (задача в презентации) в табличном процессоре Excel Toofed Помощь студентам 0 30.11.2011 01:12
Задача минимизации дисбаланса на линии сборки (задача минимакса) LenZab Microsoft Office Excel 13 13.03.2011 22:51