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

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

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

Восстановить пароль

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

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

В найденном вами примере сравнивались элементы с индексами 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,431
По умолчанию

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,431
По умолчанию

Код:
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,577
По умолчанию

Цитата:
Время работы зависит от количества точек как 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