AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

BubbleSort graphisch darstellen

Ein Thema von Piwi · begonnen am 17. Jan 2004 · letzter Beitrag vom 18. Jan 2004
 
Piwi

Registriert seit: 22. Jan 2003
Ort: Trier
15 Beiträge
 
Delphi 5 Standard
 
#1

BubbleSort graphisch darstellen

  Alt 17. Jan 2004, 15:38
Hallo Delphi-Gemeinde!

Wir haben in unserem Informatik-Kurs die Aufgabe gestellt bekommen, das BubbleSort-VErfahren graphisch darzustellen. Ich habe damit begonnen, über einen array 20 Editfelder zu definieren (Feld:array[1..20] of tedit

Diese werden mit Zufallszahlen gefüllt und sollen dann sortiert werden. Das ist mir auch schon gelungen, allerdings gibt es ein Problem: Das ganze läuft natürlich so schnell ab, dass es für das Auge nicht sichtbar ist.

Lösung natürlich: Das ganze in einen Timer einbauen. Und daran hakt es leider Weiß jemand, wie der Programmtext umgeschrieben werden muss, damit der Sortiervorgang sichtbar wird?

Hier der Programmtext:

Delphi-Quellcode:
var
  Form1: TForm1;
  Feld:array[1..20] of tedit;
implementation

{$R *.DFM}

procedure TForm1.Zufallszahlen1Click(Sender: TObject);
var i:integer;
begin
for i:=1 to 20 do begin
Feld[i].text:=inttostr(random(99)); //Felder werden mit Zufallszahlen gefüllt
end;

end;

procedure TForm1.FormCreate(Sender: TObject); //Felder werden definiert
begin
randomize;
Feld[1]:=edit1;
Feld[2]:=edit2;
Feld[3]:=edit3;
Feld[4]:=edit4;
Feld[5]:=edit5;
Feld[6]:=edit6;
Feld[7]:=edit7;
Feld[8]:=edit8;
Feld[9]:=edit9;
Feld[10]:=edit10;
Feld[11]:=edit11;
Feld[12]:=edit12;
Feld[13]:=edit13;
Feld[14]:=edit14;
Feld[15]:=edit15;
Feld[16]:=edit16;
Feld[17]:=edit17;
Feld[18]:=edit18;
Feld[19]:=edit19;
Feld[20]:=edit20;
end;

procedure TForm1.Bubblesort1Click(Sender: TObject);
var i,j,Platz:integer;
    speicherf:array[0..1] of tedit;
begin


for i:=19 downto 1 do
for j:=1 to i do
if strtoint(Feld[j].Text) > strtoint(Feld[j+1].text) //wenn die Zahl in Feld j größer ist als in deren Nachfolgerfeld
then begin


Feld[j].Top:=30; //Feld j wird graphisch heraufgesetzt (normaler Topwert ist 200)

platz:=Feld[j+1].Left; //Left-Wert des Nachfolgerfeldes wird gespeichert

Feld[j+1].Left:=Feld[j].left; //Rechtes Feld wird nach links verschoben

Feld[j].Left:=platz; //Linkes Feld (weiter oben) wird nach rechts verschoben
Feld[j].top:=200; //Feld wird wieder in die Edit-Felder-Reihe reingesetzt

Speicherf[0]:=Feld[j];
Feld[j]:=Feld[j+1];
Feld[j+1]:=Speicherf[0]; //Die Felder bekommen ihre Definition erneuert, so dass es nachher nicht zu Verwechslungen kommt (Feld an Position 1 ist dann edit1 etc.)

end;
end;
Problem: Text in einen Timer einbauen und das "Wandern" sichtbar machen! Wer weiß Rat?

Danke im Vorraus
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz