Autor |
Beitrag |
phobox
Hält's aus hier
Beiträge: 5
Win XP Pro
Delphi 4 *duck*
|
Verfasst: Mi 21.06.06 16:36
hallo erstmal,
ich mach zur zeit mein abitur und hab mich auf ne mündliche prüfung in informatik eingelassen. das thema dreht sich um sortieralgorithmen im vergleich und so.
nu sollte ich ein kleines programm programmieren, das so 2-3 algos kann (bubble vs quick hatte ich mir da gedacht). allerdings klappts irgendwie mit der visualisierung nich so ganz. damit das ding ein bissl was hermacht hatte ich mir gedacht, ich mach was ähnliches wie auf [url] www.sortieralgorithmen.de[/url], so nen kasten punkten, die dann zu so ner schönen linie zusammensortiert werden.
vllt kann mir hier jemand den ein oder anderen tipp geben, wie man sowas umsetzen könnte.
mfg
phobox
p.s. ähm ja, das ganze sollte sich ganz einfach und in delphi 4 bewerkstelligen lassen.....wir sind da leider bissl rückständig was das betrifft
Moderiert von jasocul: Link korrigiert
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 21.06.06 16:40
 in der Entwickler-Ecke.
In diesem Topic findest du einen Hinweis, wo es von Borland schon ein Beispiel zur Visualisierung von Sortieralgorithmen gibt.
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mi 21.06.06 16:40
Hi!
Genau sowas ist schon bei Delphi dabei! Schau mal bei den Demos nach der Thread-Demo. Das macht (fast) genau das was du willst
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
phobox 
Hält's aus hier
Beiträge: 5
Win XP Pro
Delphi 4 *duck*
|
Verfasst: Mi 21.06.06 17:26
ok, aussehen tuts echt nich übel, es tut auch das was ich gerne hätte, bloß sollte ich zumindest bei dem was im quelltext steht auch noch durchblicken, is immerhin ne prüfung wo der prüfer auch sachen fragen darf.
da ich sowas normal nur noch in der schule mache ist das niveau auf dem ich mich bewege im gegensatz zu dem manch anderer warscheinns schon im negativen bereich.
wie gesagt, die visualisierung wie sie auf sortieralgorithmen.de ist, wär eigentlich ganz praktisch, da daran auch ein bißchen die verfahrensweise eines algos beschreiben kann, vorallem sieht man auch dass sie was tun und sind nicht beim ersten klick schon fertig. :/
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 21.06.06 17:42
Moin!
Meinst du sowas?
cu
Narses
Einloggen, um Attachments anzusehen!
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
phobox 
Hält's aus hier
Beiträge: 5
Win XP Pro
Delphi 4 *duck*
|
Verfasst: Mi 21.06.06 17:54
sowas in die richtung hatte ich mal gemacht, aber was ich jetzt brauche is was in die richtung:
www.iti.fh-flensburg...test/sortcontest.htm
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 21.06.06 18:00
für eine Schularbeit mache ich zur zeit auch genau so ein Programm. Ich stelle es sobald es fertig ist, inklusive source online. Shapes werden hierbei durch threads parallel sortiert.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
phobox 
Hält's aus hier
Beiträge: 5
Win XP Pro
Delphi 4 *duck*
|
Verfasst: Mi 21.06.06 22:45
also, ich hab nach 5 stunden fehlersuchen und allem drum und dran endlich was halbwegs gescheites hinbekommen.
ist noch nicht ganz fertig, aber funktioniert schonmal so wie ichs gerne hätte, auch die visualisierung tut =)
wer es sich anschauen will, kann es sich hier runterladen
www.phobox.de/pruefsortieren.exe
den quelltext zeig ich lieber (noch) nich, sonst werd ich womöglich noch erschlagen, so wie der aussieht *g*
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Do 22.06.06 18:38
Wie gesagt muss ich etwas ähnliches machen. Ich geb euch jetzt einfach mal meinen source, vielleicht habt ihr ja ein paar Verbesserungsvorschläge, außerdem fehlt noch die implementierung von heap-, sowie mergesort, bin zwar gerade dabei, scheint jedoch schwerer zu sein, als ich dachte.(ich arbeite relativ viel mit globalen variablen, das finde ich, ist kein guter programmierstil, falls ihr also bessere ansätze habt, so sagt es einfach.)
Einloggen, um Attachments anzusehen!
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Fr 23.06.06 21:32
hat keiner ne idee, was ich verbessern könnte?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Sa 24.06.06 10:14
Also in den Delphi Demos ist doch sowas ähnliches das läuft aber Multithreading
Ich würde das schön in ne Windows konforme GUI packen:
- Fenster normal also auch maximierbar,...
- je Algo eine Groupbox mit Aktivieren Checkbox drin
- rechts groupbox mit Start/Stop und eine Groupbox mit Einstellungen
- Einheitliche Regelelemente(Edits, Spinedits,Regler,..)
Aus der Combobox links unten verschwindet Form wenn man etwas anderes auswählt, das soll doch bestimmt nicht so oder?
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mo 03.07.06 23:58
Habe noch ein paar veränderungen vorgenommen, vielleicht gefällt er das prog euch ja jetzt besser.
Einloggen, um Attachments anzusehen!
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 04.07.06 00:40
Das
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: 34:
| procedure TBubbleThread.execute; var count:integer; finished:boolean; i:word; begin i:=1; startPerformance; unit1.form1.Cursor:=crhourglass; form1.Button1.Enabled:=false; form1.Button2.enabled:=false;
repeat finished:=true; for count:=high(form1.line[Bubble]) downto i do begin form1.Line[Bubble][count].Brush.Color:=Linecolor1; if form1.line[Bubble][count].clientwidth>form1.line[Bubble][count-1].clientwidth then begin bigger:=count; smaller:=count-1; synchronize(Display); sleep(delay); finished:=false; end; end; form1.Line[Bubble][i-1].Brush.Color:=linecolor1; inc(i); until finished; form1.Cursor:=crdefault; form1.Button1.Enabled:=true; form1.Button2.enabled:=true; stopPerformance; form1.Label6.Caption:=performancestr+'s'; end; |
wird dir irgendwann mal um die Ohren fliegen. Die VCL ist nicht threadsafe, wesegene man nur in der Syncronize Methode auf VCL Elemente zugreifen sollte.
Desweiteren würde ich mir eine bessere Klassenstruktur überlegen. Das Anzeigen und die Werte als Ausgangsbasis haben ja alle Thread gemeinsam, da würde es sich anbieten eine Elternklasse zu implementeieren und davon dann die Sortieralgorithmen abzuleiten.
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Di 04.07.06 08:21
Ist schon besser aber
-vielleicht ne seriösere Schrift?
-"Zufällig anordnen" vielleicht "Initialisieren"?
-du scheinst immer alle Zahlen des Zahlenbereichs zu haben, sähe vielleicht interessanter aus, wenn es auch doppelte/fehlende Werte gäbe
Ich weiß, ich kann immer nur mäckern mäckern mäckern 
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Di 04.07.06 08:44
Luckie hat folgendes geschrieben: | wird dir irgendwann mal um die Ohren fliegen. Die VCL ist nicht threadsafe, wesegene man nur in der Syncronize Methode auf VCL Elemente zugreifen sollte.
Desweiteren würde ich mir eine bessere Klassenstruktur überlegen. Das Anzeigen und die Werte als Ausgangsbasis haben ja alle Thread gemeinsam, da würde es sich anbieten eine Elternklasse zu implementeieren und davon dann die Sortieralgorithmen abzuleiten. |
Ok, ist glaube ich auch schon mal passiert, aber wie du gesehen hast greife ich auf die shapes nur über die synchronize Methode zu.(Meinst du vielleicht weil Line ein Feld der Form ist?)
Was hälst du von dem 2-dimensionalen FormArray line, sollte ich das anders lösen?
Bessere Klassenstruktur, leider glaube ich, dass die einzelnen threads nicht viel miteinander zu tun haben, auch in der Visualisierung haben sie nur minimale Gemeinsamkeiten. Sollte ich die einzelnen threads trotzdem erst von einer Mutterklasse mit gemeinsamer Visualisierung ableiten.
Was hälst du von der Lösung mit dem Zeit nehmen der einzelnen threads, glaubst du dass dies eine gute Lösung ist?
digi_c hat folgendes geschrieben: | Ist schon besser aber
-vielleicht ne seriösere Schrift?
-"Zufällig anordnen" vielleicht "Initialisieren"?
-du scheinst immer alle Zahlen des Zahlenbereichs zu haben, sähe vielleicht interessanter aus, wenn es auch doppelte/fehlende Werte gäbe
Ich weiß, ich kann immer nur mäckern mäckern mäckern  |
Über konstruktive Kritik freue ich mich immer.
Das mit den insgesamt regelmäßig verteilten shapes war schon gewollt, aber vielleicht hast du recht und ich nehme doch wieder die alte lösung.
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Di 04.07.06 11:09
neuste version
Einloggen, um Attachments anzusehen!
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Mi 05.07.06 11:25
Wie vielleicht manche schon mitbekommen haben, speichere ich die zu sortierenden shapes in einem 2dimensionalen Array(für jeden algorithmus ein feld).
Um mit den feldern thread sicher arbeiten zu können, brauche ich ein nicht vcl basierendes Array, welches die einzelnen Werte speichert. Auf dieses Array greife ich dann innerhalb der einzelnen Threads zu.
Habe versucht eine Klassenstruktur aufzubauen, welche eine gemeinsame Display methode verwendet, leider kann ich nun nicht mehr alle Arrays gleichzeitig sortieren. einzeln klappt es wunder bar, aber wenn ich die threads gleichzeitig ablaufen lasse, kommt eine Speicherfehlmeldung. Ich vermute stark, dass dies etwas mit der angesprochenen Klassenstruktur zu tun hat. Vielleicht kann sich ja jemand erbarmen, und meinen code mal durchgehen.
Einloggen, um Attachments anzusehen!
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
klezmor
      
Beiträge: 558
delphi 6 personal delphi 2005 personal
|
Verfasst: Fr 14.07.06 19:36
keiner ne Idee, wie eine solche struktur aussehen könnte?
_________________ "Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth
|
|
phobox 
Hält's aus hier
Beiträge: 5
Win XP Pro
Delphi 4 *duck*
|
Verfasst: Do 20.07.06 18:57
hmm is jetzt schon ein bissl länger her, tut auch vllt nich viel zur sache, aber mündliche prüfung lief bei mir 1a....14 punkte, mitunter für das "tolle programm, mit dem ich mir so viel mühe gemacht habe"
danke euch nochmal für die zT recht hilfreichen tipps und verweise =)
mfg
phobox
|
|