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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2014, 16:51   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

В найденном вами примере сравнивались элементы с индексами j и j+1, а в вашем коде - i и j.
И кусок кода в button4click для красоты:
Код:
BubbleSort(a,low(a),high(a));
for i:=low(a) to high(a) do
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.06.2014, 19:37   #12
Леон2110
Пользователь
 
Регистрация: 23.06.2014
Сообщений: 13
По умолчанию

Большое спасибо, все заработало как надо) не подскажите еще как сделать, чтобы в мой объявленный массив в глобальных переменных, заполнялся рандомно от 1 до 99?:

a: array[0..6] of TPoint = ((x:10; y:20),(x:40; y:50),(x:40; y:40),(x:40; y:30),(x:50; y:60),(x:60; y:70),(x:10; y:10));

Если бы это было по нажатии кнопки можно было прописать randomize; и заполнить, но тут по две цифры и еще буквы х, у, и он объявлен в глобальных переменных.
Леон2110 вне форума Ответить с цитированием
Старый 26.06.2014, 19:54   #13
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
чтобы в мой объявленный массив в глобальных переменных, заполнялся рандомно
Код:
randomize;
for i:=0 to 6 do
begin
a[i].x:=random(99)+1;
a[i].y:=random(99)+1;
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.06.2014, 20:10   #14
Леон2110
Пользователь
 
Регистрация: 23.06.2014
Сообщений: 13
По умолчанию

Спасибо еще раз, отличный рандом, теперь еще одна проблемка. Хотел в конце вывести все точки таким способом:

Form1.Canvas.Polygon(a);

Но как выяснилось это способ для построения многоугольника, работает как надо, но в конце он еще соединяет первую и последнюю точку, мне этого не нужно. Знаете способ как можно вывести мои точки с координатами и соединенные линиями?
Леон2110 вне форума Ответить с цитированием
Старый 26.06.2014, 20:38   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Canvas.Polyline
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.06.2014, 20:41   #16
Леон2110
Пользователь
 
Регистрация: 23.06.2014
Сообщений: 13
По умолчанию

про Canvas.Polyline, сейчас почитаю, а вот пока пробую вот что:

компонент PaintBox и вот какой код:

Код:
Form1.PB1.Canvas.MoveTo(A[0].x,A[0].y);
Form1.PB1.Canvas.LineTo(A[1].x,A[1].y);
Form1.PB1.Canvas.MoveTo(A[1].x,A[1].y);
Form1.PB1.Canvas.LineTo(A[2].x,A[2].y);
Form1.PB1.Canvas.MoveTo(A[2].x,A[2].y);
Form1.PB1.Canvas.LineTo(A[3].x,A[3].y);
Form1.PB1.Canvas.MoveTo(A[3].x,A[3].y);
Form1.PB1.Canvas.LineTo(A[4].x,A[4].y);
...
смысл от первой точки чертит до второй, от второй до третьей и т.д., вроде нормально все, но было бы лучше если бы сами точки немного выделялись, а то когда точки лежат на одной координате, проходит сплошная линия и не видно, что там точка.

Вот немного нашел, после линий прописать:

Код:
Form1.PB1.canvas.Pixels[A[0].x,A[0].y]:=clRed;
Form1.PB1.canvas.Pixels[A[1].x,A[1].y]:=clRed;
Form1.PB1.canvas.Pixels[A[2].x,A[2].y]:=clRed;
Form1.PB1.canvas.Pixels[A[3].x,A[3].y]:=clRed;
...
Делает все точки красным цветом, но все же слабо видно, было бы удобнее если бы они были размером не 1х1 пиксель а чуть больше

и еще возникает мысль сделать это в цикле все...

Последний раз редактировалось Леон2110; 26.06.2014 в 20:51.
Леон2110 вне форума Ответить с цитированием
Старый 26.06.2014, 21:42   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
With Form1.Canvas do
begin
  Polyline(a);
  Pen.Color := clRed;
  for i := low(a) to high(a) do
    Ellipse(a[i].x - 2, a[i].y - 2, a[i].x + 2, a[i].y + 2);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.06.2014, 22:42   #18
Леон2110
Пользователь
 
Регистрация: 23.06.2014
Сообщений: 13
По умолчанию

Спасибо) намного короче и функциональнее.
Леон2110 вне форума Ответить с цитированием
Старый 27.06.2014, 20:35   #19
BHMJ(G)
 
Регистрация: 23.06.2014
Сообщений: 6
По умолчанию

Вариант со спиралью. Время работы зависит от количества точек как n**2, так что больше 5-6 тыс. точек задавать не рекомендую. В качестве начальной выбирается точка, расположенная ближе всего к одному из углов.
BHMJ(G) вне форума Ответить с цитированием
Старый 27.06.2014, 21:09   #20
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

Цитата:
Время работы зависит от количества точек как n**2
n**2 это (n * 2) или (n * n) ?
Квадрата там быть не должно, n * 2 получить нереально.
Решаться должно за n * log(n)
rrrFer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На плоскости задано множество точек. Определить все тройки точек, которые являются вершинами прямоугольного треугольника Олечка12 Помощь студентам 11 22.04.2014 19:56
Даны координаты точек n на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. getredtm Помощь студентам 3 01.07.2013 01:47
Delphi. На плоскости заданы n точек своими координатами.Построить квадрат Allexey Помощь студентам 4 18.06.2013 13:46
Даны координаты n точек на плоскости. Найти номера двух точек, расстояние между которыми наибольшее. Viwwna Паскаль, Turbo Pascal, PascalABC.NET 2 19.11.2011 06:33
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50