Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.07;
Скачать: CL | DM;

Вниз

Демонстрация сортировки   Найти похожие ветки 

 
DanweR   (2009-12-20 16:09) [0]

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


 
Сергей М. ©   (2009-12-20 16:22) [1]

И ?


 
app ©   (2009-12-20 17:42) [2]

Какие интересные задачи вам задают.


 
Джо ©   (2009-12-20 17:43) [3]

Симпатичное задание, завидую.


 
DanweR   (2009-12-20 18:26) [4]

Спасибо вам =) сарказм принят

хотелось бы что б вы помогли


 
Anatoly Podgoretsky ©   (2009-12-20 18:30) [5]

Боже ну дай же наконец выиграть.
Я столько лет тебя прошу.
Мойша ты бы хотя бы раз билет купил.


 
Юрий Зотов ©   (2009-12-20 18:40) [6]

> DanweR   (20.12.09 18:26) [4]
> хотелось бы что б вы помогли

Здесь действительно помогают. Но как Вам помочь, если Вы не задали ни одного вопроса?

Начинайте делать. Появятся вопросы - спрашивайте. Помогут.


 
DanweR   (2009-12-20 18:45) [7]

ну, вопрос... как сделать что б, панелька с текущей цифрой при проверке загорелась..


 
test ©   (2009-12-20 18:50) [8]

DanweR   (20.12.09 18:45) [7]
Меняй цвет текста или панельки


 
DanweR   (2009-12-20 18:55) [9]

ну это я понял... мне интересно как поменять все это, не прописывая это для каждой панельки. может можна сделать масив этих панелек... тогда как это сделать... и что для этого нужно... "прямые руки" не предлагать... я просто хочу научится = )


 
test ©   (2009-12-20 19:00) [10]

DanweR   (20.12.09 18:55) [9]
TPanel(FindComponent("Panel1")).color := clWhite;


 
Сергей М. ©   (2009-12-20 19:13) [11]


> DanweR   (20.12.09 18:45) [7]


Панельки-то откуда взялись  ?


 
DanweR   (2009-12-20 19:35) [12]

вобщем... непорядок щас у меня в голове =)

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


 
test ©   (2009-12-20 19:43) [13]


var
 panels: array of TPanel;
 i: integer;
begin
 SetLentgh(panels,8);
 for i:= 0 to Length(panels) -1 do
        panels[i] := TPanel.Create(Form1);
end;


Как то так.


 
DanweR   (2009-12-20 19:50) [14]

осталось только их положение и размеры на форме указать =)


 
DanweR   (2009-12-20 20:00) [15]

а как ставить паузу в цикле?


 
DanweR   (2009-12-20 20:01) [16]

а как ставить паузу или в цикле? а то оно пролетает все быстренько, заметить не успеваю =)


 
DanweR   (2009-12-20 20:01) [17]

а как ставить паузу или задержку в цикле? а то оно пролетает все быстренько, заметить не успеваю =)


 
Юрий Зотов ©   (2009-12-20 20:02) [18]


> DanweR   (20.12.09 20:01) [17]

Sleep(1000);


 
Германн ©   (2009-12-20 20:02) [19]


> а как ставить паузу

Sleep


 
DanweR   (2009-12-20 20:03) [20]

ой, извините...


 
DanweR   (2009-12-20 20:07) [21]

со     sleep(1000); выходить будто оно подвисает, а дальше все сходу появляется =(


 
Anatoly Podgoretsky ©   (2009-12-20 20:09) [22]

Ты уже пример из Демос посмотрел?


 
Юрий Зотов ©   (2009-12-20 20:10) [23]


> DanweR   (20.12.09 20:07) [21]

Вы же хотели паузу? Вот ее и получили.


 
Германн ©   (2009-12-20 20:15) [24]


> со     sleep(1000); выходить будто оно подвисает, а дальше
> все сходу появляется =(
>

Рядом со Sleep положи Application.ProcessMessages


 
DanweR   (2009-12-20 20:15) [25]

>Anatoly Podgoretsky ©   (20.12.09 20:09) [22]

???


 
DanweR   (2009-12-20 20:40) [26]

Германн ©   (20.12.09 20:15) [24]

То что надо было =)


 
Джо ©   (2009-12-20 20:43) [27]

В папке Delphi/Source/Demos (или где-то рядом) вроде бы есть пример с визуализацией методов сортировки на основе нитей.


 
Джо ©   (2009-12-20 20:44) [28]

Delphi\Demos\Threads


 
test ©   (2009-12-20 20:51) [29]

DanweR   (20.12.09 20:07) [21]
Перерисовывай Repaint перед Sleep


 
Сергей М. ©   (2009-12-20 21:19) [30]


> DanweR   (20.12.09 19:35) [12]
> Масив будет выводится на панельки... каждый елемент на отдельную


Сам придумал, про панельки-то ? Или доброжелатели подсказали ?


 
Amoeba ©   (2009-12-20 22:31) [31]


> DanweR   (20.12.09 19:35) [12]
>
> вобщем... непорядок щас у меня в голове =)
>
> Масив будет выводится на панельки... каждый елемент на отдельную.
> ..

Действительно в голове непорядок, раз ничего другого, кроме панелек в голову не пришло.

Выводи, например, в DrawGrid в событии OnDrawCell. И не надо будет кучу компонентов плодить вместо одного, достаточного для визуализации.


 
TUser ©   (2009-12-20 23:12) [32]

Да можно и с панельками, и даже без потоковы сделать. Повесь таймер.


 
DanweR   (2009-12-21 00:09) [33]

я уже сделал =) спасибо


 
Юрий Зотов ©   (2009-12-21 00:20) [34]

> DanweR   (21.12.09 00:09) [33]

Я тоже...
:o)

unit Unit1;

interface

uses
 Windows, SysUtils, Classes, Controls, Forms, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   procedure ButtonClick(Sender: TObject);
   procedure VisualSwap(L, R: integer);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

const
 Len = 10;
 Size = 50;

var
 Arr: array[1..Len] of integer;
 Panels: array[1..Len] of TPanel;

procedure TForm1.FormCreate(Sender: TObject);
var
 i: integer;
begin
 BorderStyle := bsDialog;
 SetBounds(Left, Top, 600, 200);
 Position := poScreenCenter;
 with TButton.Create(Self) do
 begin
   Caption := "Start";
   Left := Self.Width - Width - 16;
   Top := Self.Height - Height - 32;
   OnClick := ButtonClick;
   Parent := Self
 end;
 Randomize;
 for i := 1 to Len do
 begin
   Arr[i] := 1 + Random(100);
   Panels[i] := TPanel.Create(Self);
   Panels[i].Caption := IntToStr(Arr[i]);
   Panels[i].SetBounds(Size * (i - 1), 0, Size, Size);
   Panels[i].Parent := Self
 end
end;

procedure TForm1.ButtonClick(Sender: TObject);
var
 i, j, A: integer;
begin
 TButton(Sender).Enabled := False;
 for i := Len downto 1 do
   for j := 1 to Len - 1 do
     if Arr[j] > Arr[j + 1] then
     begin
       A := Arr[j];
       Arr[j] := Arr[j + 1];
       Arr[j + 1] := A;
       VisualSwap(j, j + 1)
     end
end;

procedure TForm1.VisualSwap(L, R: integer);

 procedure Delay;
 var
   T: cardinal;
 begin
   T := GetTickCount + 1;
   while GetTickCount < T do
     Application.ProcessMessages
 end;

 procedure MoveDown(Panel: TPanel);
 var
   i: integer;
 begin
   for i := Panel.Top + 1 to  Panel.Top + Size + 10 do
   begin
     Panel.Top := i;
     Delay
   end
 end;

 procedure MoveUp(Panel: TPanel);
 var
   i: integer;
 begin
   for i := Panel.Top - 1 downto Panel.Top - Size - 10  do
   begin
     Panel.Top := i;
     Delay
   end
 end;

 procedure MoveLeft(Panel: TPanel);
 var
   i: integer;
 begin
   for i := Panel.Left - 1 downto Panel.Left - Size do
   begin
     Panel.Left := i;
     Delay
   end
 end;

 procedure MoveRight(Panel: TPanel);
 var
   i: integer;
 begin
   for i := Panel.Left + 1 to Panel.Left + Size  do
   begin
     Panel.Left := i;
     Delay
   end
 end;

var
 P: TPanel;
begin
 MoveDown(Panels[R]);
 MoveRight(Panels[L]);
 MoveLeft(Panels[R]);
 MoveUp(Panels[R]);
 P := Panels[R];
 Panels[R] := Panels[L];
 Panels[L] := P
end;

end.


 
test ©   (2009-12-21 00:21) [35]

Юрий Зотов ©   (21.12.09 00:20) [34]
Тебе тоже лабораторную задали? ))


 
Юрий Зотов ©   (2009-12-21 00:28) [36]

> test ©   (21.12.09 00:21) [35]

Отдыхаю. По Delphi соскучился. И захотелось посмотреть, как панельки елозят. Действительно - как будто пузырек всплывает.

:o)


 
Германн ©   (2009-12-21 00:56) [37]


> Отдыхаю. По Delphi соскучился. И захотелось посмотреть,
> как панельки елозят. Действительно - как будто пузырек всплывает.
>

На Яве. джаве или как там её такой красоты нет?


 
Юрий Зотов ©   (2009-12-21 00:59) [38]


> Германн ©   (21.12.09 00:56) [37]


Есть, конечно, только кодить дольше.


 
Германн ©   (2009-12-21 01:08) [39]


> Юрий Зотов ©   (21.12.09 00:59) [38]
>
>
> > Германн ©   (21.12.09 00:56) [37]
>
>
> Есть, конечно, только кодить дольше.
>

:)
Мне пока проще. Я и на Delphi сейчас работаю довольно много. А язык ST для PL-контроллеров взял за основу Паскаль (очень близок к ТП).


 
Германн ©   (2009-12-21 01:20) [40]


> Мне пока проще.

Правда я решаю бредовую задачу, которая не имеет (во всяком случае на сегодняшний день) практического решения. Чем всё это кончится - не знаю.



Страницы: 1 2 вся ветка

Текущий архив: 2010.03.07;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.012 c
2-1262702443
RWolf
2010-01-05 17:40
2010.03.07
ленивые вычисления


2-1262455962
antonn
2010-01-02 21:12
2010.03.07
из регулярной процедуры в экземпляр класса


2-1262423504
serhiyiv
2010-01-02 12:11
2010.03.07
TMemoryStream


2-1260321681
cosinus
2009-12-09 04:21
2010.03.07
Как из видеофайла получить кодек, которым он сжат?


11-1212953619
Elec3C
2008-06-08 23:33
2010.03.07
TKOLmdvXLGrid