Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Liste Sortieren - Gleiche Liste wie bei den anderen Themen (https://www.delphipraxis.net/139876-liste-sortieren-gleiche-liste-wie-bei-den-anderen-themen.html)

Schnittcher 7. Sep 2009 14:47

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Hallo,

ist das denn das was ihr meint?

Delphi-Quellcode:
    FList: IInterfaceList;
Das ist nämlich meine Liste.

Gruß,
Schnittcher

Schnittcher 7. Sep 2009 15:27

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Hallo,

ich habe jetzt eine weitere Information erhalten.

Ich soll das Sortieren mit 2 Schleifen machen.
Schauen ob etwas größer oder kleiner ist und dann ggf. tauschen.

Kann sich jemand darunter etwas vorstellen?

Gruß,
Schnittcher

Medium 7. Sep 2009 15:59

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Mal so am Rande: Warum um Himmelswillen bastelst du dir eine Liste aus Interfaces zusammen? Mit einer TStringList oder einer eigenen Ableitung von TList wärst du so viel einfacher dran, und hättest die Sortierung einfach frei Haus schon eingebaut (bei TStringList zumindest, bei TList muss man aber auch nur noch eine Vergleichsmethode basteln).
Gibt's irgendetwas speziells was du tust weswegen du über die Interfaces gehts, oder war das "ich kopier mal diesen Code, verstehe ihn nicht, aber immerhin hab ich was, was in etwa so klingt als wär's toll"? Im letzteren Fall: Sowas kommt von sowas.

Schnittcher 7. Sep 2009 16:07

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Hallo,

nein das ist eien Aufgabe die ich bekommen habe.
Aber ich komme nicht weiter.

PS: Ich finde es ne Frechheit sowas zu unterstellen!

Gruß,
Schnittcher

Klaus01 7. Sep 2009 16:27

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
.. stell doch mal Deine Aufgabe hier hinein (als pdf)
dann kann man ja schauen ob Du unbedingt mit Interfaces arbeiten musst.

Grüße
Klaus

Medium 7. Sep 2009 17:30

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Zitat:

Zitat von Schnittcher
PS: Ich finde es ne Frechheit sowas zu unterstellen!

Aufrichtige Entschuldigung.

Da solche Fälle allerdings hier nicht unbedingt so selten sind wie man es sich wünschen würde und vom Verlauf her diesem Thread hier nicht unähnlich wirken, war der Gedanke zumindest nicht unbegründet. Tut mir leid wenn es hier nun den falschen erwischt hat - nix für ungut.

Der genaue Wortlaut der Aufgabenstellung dürfte hier in der Tat erheblichen Aufschluss geben, weil zumindest ich kann im Moment nicht so ganz erkennen worin das ganze am Ende mal münden soll.

Forlan 7. Sep 2009 20:26

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
mmh... Das Sortierverfahren das du brauchst klingt ganz stark nach Bubblesort.. :mrgreen:

Schnittcher 8. Sep 2009 07:24

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Hallo,

nein die Aufgabe habe ich mündlich erhalten, dass ich mit Interfaces arbeiten soll.

Zitat:

Zitat von Medium
Zitat:

Zitat von Schnittcher
PS: Ich finde es ne Frechheit sowas zu unterstellen!

Aufrichtige Entschuldigung.

Da solche Fälle allerdings hier nicht unbedingt so selten sind wie man es sich wünschen würde und vom Verlauf her diesem Thread hier nicht unähnlich wirken, war der Gedanke zumindest nicht unbegründet. Tut mir leid wenn es hier nun den falschen erwischt hat - nix für ungut.

Der genaue Wortlaut der Aufgabenstellung dürfte hier in der Tat erheblichen Aufschluss geben, weil zumindest ich kann im Moment nicht so ganz erkennen worin das ganze am Ende mal münden soll.

Schon okay, ich kann dich ja auch verstehen, wenn es hier viele solche Fälle gibt.

Also ich befinde mich in einer Ausbildung und aus diesem Grund will ich auch nicht nur Text kopieren, ich will etwas lernen.

Zitat:

Zitat von Forlan
mmh... Das Sortierverfahren das du brauchst klingt ganz stark nach Bubblesort.. :mrgreen:

Das stimmt, ich habe mir das Sortierverfahren auch schon angeschaut, aber leider verstehe ich nicht, wie ich das an meine Aufgabe anpassen soll.

Gruß,
Schnittcher

hoika 8. Sep 2009 08:41

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Hallo,

Delphi-Quellcode:

property Count: Integer
property Items[const AIndex: Integer]: IAuto
Also hier wäre erst mal das aCount und das Array-Property

also jetzt mal den BubbleSort so hingeschludert.

Delphi-Quellcode:
var
  i. j: Integer;
  Auto_i: IAuto;
  Auto_j: IAuto;
  Auto_Temp: IAuto;

for i:= 0 to Count-1 do
begin
  for j:= i+1 To Count-1 do
  begin
    Auto_i:= Items[i];
    Auto_j:= Items[j];
    if Auto_j.XXX<Auto_i.XXX then
    begin
      Auto_Temp:= Auto_i;
      Auto_i:= Auto_j;
      Auto_j:= Auto_Temp;
    end;
  end;
end;
Das XXX ist irgendein ein Vergleichskriterium.

Aber auch mir ist schleierhaft, was das soll ?
weder zum Sort-Üben noch zum Interface-Üben geeignet,
weil 2 Sachen gemischt werden


#Update#
Es muss natürlich das < sein
Auto_j.XXX<Auto_i.XXX

Heiko

Medium 8. Sep 2009 08:44

Re: Liste Sortieren - Gleiche Liste wie bei den anderen Them
 
Okay, du hast vermutlich noch nie zuvor eine Sortierung gebaut. Daher mal kleinschrittig:

Wie definiert man "sortiert"? Sortiert ist etwas, wenn Elemente einer Menge entsprechend ihrer ordinalen Rangfolge angeordnet sind. Das heisst für natürliche Zahlen z.B. dass eine 5 immer vor einer 8 stehen muss, eine 12 aber hinter der 8. Das heisst, das aller erste was du brauchst ist ein Weg den Besitzernamen eine Rangfolge zuzuordnen.
Da es sich hier um Text handelt macht eine alphabetische Ordnung wohl am meisten Sinn, so dass A vor B steht - man sagt dann A kleiner B.

Was muss man tun, um zwei Elemente zu sortieren? Simpel: Vergleiche die beiden, und tausche sie gegeneinander aus wenn das erste größer dem zweiten ist. (Für aufsteigende Sortierung. Für absteigend genau anders herum.)
(Wenn du das für jedes Element einer Liste und seinem Nachfolger machst, so lange bis nichts mehr vertauscht wurde, ist das schon Bubblesort.)

Nun bleibt noch die Frage: Wie kann ich in Delphi definieren dass ein Buchstabe kleiner oder größer als ein anderer ist? Das ist ebenfalls sehr einfach, da in so ziemlich allen Zeichentabellen - allen voran die ASCII Tabelle - dem A ein kleinerer Zahlwert zugeordnet ist als dem B. Um nun in Delphi zu fragen ob Zeichen1 kleiner Zeichen2 genügt:
Delphi-Quellcode:
var
  Z1KleinerZ2: Boolean;
  Z1, Z2: Char;
begin
  Z1 := 'A';
  Z2 := 'B';
  Z1KleinerZ2 := Ord(Z1) < Ord(Z2);
end;
Das ganze würde jetzt erst nur einen Buchstaben betrachten. Für ganze Zeichenketten könnte sowas so aussehen:
Delphi-Quellcode:
var
  S1kleinerS2: Boolean;
  S1, S2: String;
  i: Integer;
begin
  S1 := 'Andreas';
  S2 := 'Aaron';
  i := 1;
  while (S1[i]=S2[i]) inc(i);
  S1kleinerS2 := S1[i] < S2[i];
end;
Du schiebst also "i" solange nach "hinten" in deinen Strings, bis ein unterschiedliches Zeichen auftaucht und vergleichst dann diese. Der Codefetzen hier knallt übrigens noch, wenn die beiden Strings unterschiedliche lang sind, und einer der beiden gleich dem anderen ist, nur um Zeichen gekürzt. Das müsstest du dann noch separat behandeln.

Und das sollte schon an Infos ausreichen um zumindest ein einfaches Bubblesort auf Stringbasis zu basteln. Wenn nicht, sag uns doch bitte wo genau dann noch das Problem liegt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz