Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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]


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

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


 
pasha_golub ©   (2009-12-21 13:17) [41]

Автор судя по радостному "сделал" таки сдал преподу демо-проект из поставки среды. :))



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

Форум: "Прочее";
Текущий архив: 2010.03.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.005 c
11-1213530831
Artlav
2008-06-15 15:53
2010.03.07
RichEdit: Синхронизация и ограничения.


15-1261496955
xayam
2009-12-22 18:49
2010.03.07
Когда истина зависит от терминологии


15-1261394309
Б
2009-12-21 14:18
2010.03.07
Стрелки в Word 2007.


10-1164879867
salexn
2006-11-30 12:44
2010.03.07
Регистрация сервера


2-1261824983
Егорка
2009-12-26 13:56
2010.03.07
Таймер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский