Hi,
ich schreibe zur Zeit meine Facharbeit in Informatik Klasse 12.
Als Thema habe ich Sortieralgorithmen bekommen.
Die Algorithmen an sich habe ich bereits fertig und sie funktionieren auch.
Mein Problem ist, dass ich den Ablauf der Algorithmen grafisch darstellen wollte,
indem ich auf einem Image die Werte als Säulendiagramm ausgeben lasse.
Ich lasse das Diagramm bereits einmal bevor Bubblesort startet zeichnen,
das Diagramm wird aber erst erneuert, wenn Bubblesort komplett durchgelaufen ist.
Am Beispiel von Bubblesort habe ich dass wie folgt gelöst:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure Bubblesort(var value:Array of Integer);
procedure DrawBubble(value:Array of Integer); var x :Integer; begin with BubbleImage.Canvas do begin Brush.Style:=bsSolid; Pen.Color:=clWhite; Rectangle(0,0,201,201); Pen.Color:=clBlack; for x:=0 to 99 do begin MoveTo(x*2,200); LineTo(x*2,200-value[x]); end; end; end;
var i :Integer; j :Integer; begin for i:=99 downto 0 do for j:=0 to i-1 do begin if value[j]>value[j+1] then exchange(value[j],value[j+1]); DrawBubble(value); sleep(5); end; end; |
Der Sortieralgorithmus an sich funktioniert einwandfrei, nur eben die Darstellung nicht.
Wenn ich anstelle von 'sleep' einfach 'showmessage' schreibe, funktioniert es.
Dann wird bei jedem Schritt das Diagramm neu gezeichnet.
Aber es kann ja nich der Sinn sein, hunderte von fenstern zu öffnen bzw. schließen,
nur um Bubblesort in Aktion zu erleben
Deshalb jetzt meine Frage:
Wie kann ich das Diagramm bei jedem Schritt neu zeichnen lassen?