![]() |
array sortieren
Ich hab ein riesengroßes Problem wie kann ich folgendes array Feldsortieren?
array[1..24] Jedem z.B. A[1] ist der Wert eines edit-Feldes zugewiesen. Ich möchte nun das Feld sortieren um anschließend die 8 höchsten Werte(1-15 sind möglich) zu erhalten um diese dann addieren zu können! Wie müsste ein solcher BubbleSortAlgorithmus aussehen und wo schreibe ich den genau hin? |
Re: array sortieren
Array of was?
|
Re: array sortieren
array[1..24] of word
-->Ich will ja Zahlen sortieren! |
Re: array sortieren
Unser Cheffe höchstpersönlich hat ein recht gutes Tutorial zu allerlei Sortieralgorithmen geschrieben ;)
![]() |
Re: array sortieren
Auf
![]() |
Re: array sortieren
Die Suchfunktion sollte auch Einiges zu Tage befördern :zwinker:
|
Re: array sortieren
Das hilft mir aber alles nicht weiter:
Selbst wenn ich folgenden Pseudocde habe:
Delphi-Quellcode:
Wo kommt diese Prozedur hin und wie verweise ich innerhalb einer Button1click prozedur darauf oder kann ich sie in selbige einbauen?
Procedure BubbleSort;
var i,j : Integer; Begin For i:= N downto 1 Do For j:= 1 To i Do If (Data[j-1] > Data[j]) Then SwapValues( j-1, j ); End; Und vor allem wie komme ich an die 8 "besten" Elemente? |
Re: array sortieren
Bei dem von Dir geposteten Code fehlt die Hälfte. Du musst das Array schon als Parameter übergeben. Schau Dir doch einfach mal Daniels Tut an und schmeiß Deinen zitierten Code in die Tonne.
|
Re: array sortieren
Zitat:
Zitat:
Delphi-Quellcode:
for i := 0 to 7 do
MachWasMit(Array[i]) |
Re: array sortieren
Also so?
Delphi-Quellcode:
Procedure BubbleSort;
var i,j : Integer; Begin For i:= 24 downto 1 Do For j:= 1 To i Do If (Array[j-1] > Array[j]) Then SwapValues( j-1, j ); End; |
Re: array sortieren
Zitat:
Zitat:
|
Re: array sortieren
Wenn ihr das alle so genau wisst, warum schreibt ihr immer so unkonkrete Antworten!
Natürlich muss ich selbst überlegen! Aber ich habe von Bubblesort etc. bis zum gestrigen Tage nichts gehört und da soll ich wissen wie ich ihn auf mein Problem anpassen kann?!? Vielleciht hat jemand einen nützlichen Ratschlag! |
Re: array sortieren
Du hast Links zu einem Tutorial sowie zu Wikipedia bekommen. Das sollen unkonkrete Antworten sein?
|
Re: array sortieren
Zitat:
-Antworten/Tutorials versuchen zu verstehen -Grundwissen ( Variablen muss man deklarieren) ... |
Re: array sortieren
außerdem ist Bubblesort das einfachste Sortierverfahren, das es gibt!
Das Verfahren beruht darauf, dass man immer wieder die Liste durchgeht und sobald man einen Fehlstand entdeckt, diesen korrigiert. Das macht man dann so lange, bis alle zahlen an der richtigen Stelle sind... So schwer ist das doch nicht, oder? Also wenn du uns mal deinen _ernstgemeinten_ Lösungsansatz zeigst, dann können wir dir auch helfen |
Re: array sortieren
Wie übergebe ich das Feld(array) als Parameter?/Warum kennt mein Delphi die Prozedur "SwapValues" nicht?
Delphi-Quellcode:
Wenn mein array: B[1..24] ist müsste es doch so hinhauen?!?
Procedure BubbleSort;
var i,j : Integer; Begin For i:= 24 downto 1 Do For j:= 1 To i Do If (B[j-1] > B[j]) Then SwapValues( j-1, j ); End; P.S. Wie rufe ich die Prozedur aus meiner On-Click prozedur heraus auf? |
Re: array sortieren
Delphi-Quellcode:
Procedure BubbleSort( inArray: Array of Word);
|
Re: array sortieren
Die SwapValues procedure musst du wohl noch selber schreiben...
Also einfach in nem Dreieckstausch die beiden Werte vertauschen h:=Wert1; Wert1:=Wert2; Wert2:=h; |
Re: array sortieren
Das hat mir schon einmal geholfen, aber warum kennt mein Delphi die Prozedur "SwapValues" nicht?[So kann ich nicht compilieren!]
|
Re: array sortieren
Zitat:
|
Re: array sortieren
Wenn ich beim Gockel die Begriffe [google]Delphi + Bubblesort[/google] eingebe, habe ich als 3. Treffer
![]() |
Re: array sortieren
Und eine Vertauschen 2 Werten macht man am Besten mit einem Dreieckstausch
|
Re: array sortieren
Weil SwapValues eine so genannte, selbst geschriebene Procedure von Wikipedia ist, und dies nicht in diesem Thema "Bubblesort" extra erklärt werden sollte/könnte/müsste/... ach such dir n wort aus :roll:
[EDIT] wohl mal wieder zu spät :shock: [/EDIT] |
Re: array sortieren
Vielen Dank für die nützlichen Hinweise, aber eine FRage bleibt:
Wie rufe ich die Procedure Bubblesort innerhalb meiner Button1cclick prozedur auf? |
Re: array sortieren
Zitat:
Delphi-Quellcode:
Bubblesort(MeinArray);
|
Re: array sortieren
weil die Frage schon vorprogrammiert (schöner Wortwitz =D ) ist, einer Procedure "SwapValues" übergibt man 2 parameter!
Delphi-Quellcode:
demnach erwartet diese auch 2!
SwapValues(j-1,j)
Delphi-Quellcode:
procedure TForm1.SwapValues(a,b:integer);
|
Re: array sortieren
inzwischen bin ich so weit gekommen:
(Kann jemand mal Korrektur lesen?!?)
Delphi-Quellcode:
Zunächst mekkert er immer im Deklarationsteil(oben) bei der Prodedure BubbleSort(...), desweiteren missfällt ihm die if Zeile der Prozedur!procedure Button1Click(Sender: TObject); Procedure BubbleSort(var B: Array of byte); private { Private-Deklarationen } {usw.} Procedure BubbleSort(var B: Array of byte); Procedure Swap(var xx,yy:integer); var Swp: integer; begin swp:=xx; xx:=yy; yy:=swp; end; var i,j : Integer; Begin For i:= 1 to 24 Do For j:= 1 To 24-1 Do If (B[j] > B[j+1]) Then Swap( B[j], B[j+1] ); End; |
Re: array sortieren
Was soll denn A sein?
[edit] Und wenn Du es im interface-Teil als Methode Deines Formulars deklarierst, musst Du es im implementation-Teil auch als Methode schreiben:
Delphi-Quellcode:
[/edit]
procedure TDeineForm.Bubblesort(var B: Array of byte);
|
Re: array sortieren
Das ist eine wirklich gute Frage!
|
Re: array sortieren
Dein Array ist vom Typ "Byte" und deine Swap Prozedure tauscht Werte vom Typ Integer und angeblich ist dein Array ja vom Typ Word. Du solltest dich mal entscheiden.
|
Re: array sortieren
Vielen Dank, da war ich wohl wieder etwas zu flink! Aber trotzdem mekkert er und bezeichnet die Prozedur innerhalb des "type"-Teiles, d.h. vor private als "Ungeügende Forward- oder External-Deklaration: TForm5.BubbleSort"
|
Re: array sortieren
Schieb es mal unter private.
|
Re: array sortieren
Bringt leider auch nichts!
|
Re: array sortieren
Du hast aber nicht im interface-Teil "TForm5" davorgeschrieben, oder? Das gehört nur in den implementation-Teil.
|
Re: array sortieren
|
Re: array sortieren
Nein das habe ich nicht so geschrieben: Mein Code lautet:
[delphi] procedure Button1Click(Sender: TObject); Procedure BubbleSort(var B: Array of byte); {hier meldet er den Fehler} private { Private-Deklarationen } {usw.} Procedure BubbleSort(var B: Array of byte); [delphi] |
Re: array sortieren
Und damit hast Du alles ignoriert, was ich vorher gepostet hab. :?
|
Re: array sortieren
Aber unter Private klappt es ja auch nicht, deshalb habe ich es wieder verworfen...
|
Re: array sortieren
Delphi-Quellcode:
procedure Button1Click(Sender: TObject); private { Private-Deklarationen } ... Procedure BubbleSort(var B: Array of byte); {hier meldet er den Fehler} {usw.} Procedure TForm<x>.BubbleSort(var B: Array of byte); |
Re: array sortieren
Nochmal zum Mitschreiben:
Delphi-Quellcode:
Und nun lies Dir meine vorherigen Postings noch einmal durch.
type
TForm5 = class(TForm) ... private Procedure BubbleSort(var B: Array of byte); ... end; ... implementation ... Procedure TForm5.BubbleSort(var B: Array of byte); //hier muss das TForm5 davor [edit] *Grmpf* Markus :lol: [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 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-2025 by Thomas Breitkreuz