Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Shellsort-projekt
delphischueler - Sa 03.11.07 12:43
Titel: Shellsort-projekt
hi @ all....
ich habe da ein kleines informatisches problem....
ich habe in der schule ein projekt über shellsort aufbekommen, habe da aber irgendwie den überblick verloren....
ich habe schon angefangen mit der arbeit, komme nun aber nicht weiter..
es handelt sich um folgendes....
1.Erstellen Sie in Delphi ei Programm, dass 6 aus 60 zufälligen Zhalen erzeugt. Diese Zahlen sollen mit Hilfe von Shellsort sortiert werden.
2.Erstellen Sie ein zweites Programm, bei dem aus 1000 Zahlen 100 zufällig erzeugt werden. Dabei soll keine Zahl doppelt auftreten. Anschließend werden die Zahlen sortiert. Die Ausgabe der sortierten und der unsortierten Felder erfolgen in einer Tabelle.
zu allem übel habe ich noch nie mit tabellen gearbeitet.....über ansätze oder auch komplette programme( :wink: ) wäre ich sehr dankbar....
liebe grüße,delphischueler
Moderiert von
Narses: Topic aus Sonstiges (C# / .NET) verschoben am Sa 03.11.2007 um 16:42
Tilo - Sa 03.11.07 19:18
Zu Tabellen: das sind Arrays. zb. Feld[10].
Zu erzeugen der Zufallszahlen: Schreibe die Quellzahlen in eine Liste. Mit hilfe von random holst Du an eine Zahl aus der Liste, gibst diese Zahl weiter und löscht sie aus der Liste. Als Liste Nehme Tstringlist und speicher die Zahlen(vermutlich Integer?) als string. Ist zwar nicht sehr elegant. Hat aber den Vorteil das Tstringlist als Nachfahre von Tlist die Funktion des Löschens bereitstellt und Du nicht Tlist für Integer ableiten mußt.
Felder bearbeitet man üblicherweise mit Schleifen.
z.B.
Delphi-Quelltext
1: 2:
| for a:=0 to 20 do Feld[a]:=a*a; |
Hoffe das war jetzt hilfreich.
delphischueler - So 04.11.07 14:52
hm nein, leider nicht.......ich hab jetzt soviel darüber gelesen, dass ich nun komplett verwirrt bin....gibts das auch als fertiges programm????????
delphischueler - So 04.11.07 14:57
oder machen wir es anders.....ich schreib hier einfach mal meinen quelltext rein, vllt findet ja jm raus, was mir hier fehlt...
das ist jetzt die prozedur für die sortierung....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.Button2Click(Sender: TObject); var abstand,i,j,merke:integer; done:boolean; begin abstand:=n; while(abstand>1) do begin abstand:=abstand div 2; repeat done:=true; for j:=1 to n-abstand do begin i:=j+abstand; if (zahl[j]>zahl[i]) then begin merke:=zahl[j]; zahl[j]:=zahl[i]; zahl[i]:=merke; done:=false; end; end; until done; end; end; |
Moderiert von
Tino: Delphi-Tags hinzugefügt
ub60 - So 04.11.07 20:39
Hallo delphischueler,
in dem Buch, aus dem Du die Prozedur abgeschrieben hast, stehen auch noch:
-auf Seite 156: Informationen über Arrays
-auf Seite 157: Informatoinen über Zufallszahlen
-von Seite 165-167: Informationen über Shellsort.
-ab Seite 132: Informationen über die Arbeit mit ListBoxen
Lies doch bitte dort mal nach.
Brauchst Du noch weitere Hilfe? Frage wieder hier, aber bitte etwas konkreter.
ub60
delphischueler - Mo 05.11.07 07:42
ich habe es aus keinem buch abgeschrieben, war eine kopie meiner lehrerin......
ub60 - Mo 05.11.07 10:31
Oh, SORRY! :( :(
Dann schreibe doch bitte trotzdem Dein Problem konkreter.
Die kompletten Hausaufgaben wird Dir hier im Forum keiner Lösen. Hilfen gibt es immer gern.
Und zum Quelltext:
n ist die Anzahl der Elemente, Zahl ist ein array[1..n] of Integer. zahl[1] ist das erste Element des Arrays usw.
ub60
delphischueler - Mo 05.11.07 19:07
nein ich wollte ja auch gar nicht, dass hier jemand die kompletten aufgaben macht. war gar nicht meine absicht....
mein problem ist nur, dass ich nicht wirklich weiß, wie ich dem programm sage, dass er die zahlen (die ich vorher schon erzeugt habe) aus den edit-feldern sortiert... wie ich zufallszahlen erzeuge ist mir klar.
ub60 - Mo 05.11.07 20:13
Wenn Du die Zahlen in Edit-Feldern hast (warum keine Listbox oder ein StringGrid) musst Du sie noch in das Array bringen, also z. B. so:
Delphi-Quelltext
1: 2: 3:
| Zahl[1]:=StrToInt(Zahl1Edit.Text); Zahl[2]:=StrToInt(Zahl2Edit.Text); ... |
Dann die Prozedur aufrufen und die Zahlen wieder auslesen und anzeigen.
ub60
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!