AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sortieralgorithmen

Ein Thema von biby90 · begonnen am 15. Aug 2011 · letzter Beitrag vom 22. Aug 2011
Antwort Antwort
biby90
(Gast)

n/a Beiträge
 
#1

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 15:30
also bin jetzt bis dahin
Delphi-Quellcode:
function TForm1.Sort(ASrcA, ASrcD: String): Integer;
var
  i: Integer;
  lResult: Integer;
begin
  Result := 0;
  for i:=1 to Length(ASrcD) do
  begin
    for lResult:= CharToInt(ASrcD[i]) to CharToInt(ASrcA[i]) do
      OutputDebugString( PChar(ASrcD[i] + ' = ' + IntToStr(lResult)) );
    begin
      if lResult > 0 then
      Result:= i+1;
    end;
    for lResult:= CharToInt(ASrcA[i]) to CharToInt(ASrcD[i]) do
      OutputDebugString( PChar(ASrcA[i] + ' = ' + IntToStr(lResult)) );
    begin
      if lResult < 0 then
      Result:= i-1;
    end;
er sortiert zwar aber nicht nach dem alphabet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#2

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 15:52
Du ermittelst doch Zahlenwerte aus den Buchstaben. Die kann man auch einfach von einander subtrahieren. Das macht allerdings auch nur solange Sinn, wie das Gesamtergebnis 0 ist, danach musst Du aus der Schleife raus, sonst überschreibst Du Dir das richtige Ergebnis ggf. mit einem falschen. Außerdem kann die Länge der Strings ja auch unterschiedlich sein, daher darf die Vergleichsschleife nur über die Länge des kürzeren laufen. Kommt da 0 bei heraus, ist der längere auch der größere.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#3

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 15:54
prinzip verstanden... mal gucken ob es auch in der praxis klappr
  Mit Zitat antworten Zitat
S.pas.s

Registriert seit: 16. Aug 2011
5 Beiträge
 
Delphi XE Professional
 
#4

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 16:04
zu DeddyH:
Also ich lerne von anderer Leute code mehr als aus Büchern.

Damit (hal > hallo) oder (hal < hallo), muss man erst mal entscheiden, was sinnvoll wäre.
Eine Wahl wäre z.B. so:

Delphi-Quellcode:
function TForm1.StrCompare(s1, s2: String): Integer;
var
  j, minLen: Integer;
begin
  minLen := Length(s1);
  if Length(s2) < minLen then
    minLen := Length(s2);
  j := 1; result := 0;
  while (j <= minLen) and (result = 0) do
  begin
    if ord(s1[j]) < ord(s2[j]) then
      result := -1
    else
      if ord(s1[j]) > ord(s2[j]) then
        result := 1
      else
        result := 0;
    inc(j);
  end;
  if (result = 0) and (Length(s2) > minLen) then result := -1;
  if (result = 0) and (Length(s1) > minLen) then result := 1;
end;
zu Biby90:
Du brauchst kein ChartoInt. Die Funktion ord macht das schon.
Zum Vergleichen musst Du synchron durch beide Strings laufen: (j = 1..minLen) bis einer von beiden zu Ende ist. Sobald ein Unterschied in der Zeichenfolge besteht, kann die Funktion beendet werden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#5

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 16:38
Wieso Bücher? Ich habe lediglich versucht, Hilfe zur Selbsthilfe zu geben, dabei lernt man nämlich noch mehr. Aber wenn der Compiler etwas moniert, ist es wenig hilfreich zu sagen "der meckert", ohne den Code dann zu zeigen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#6

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 16:40
naja ich brauche ja auch eigentlich keine Sort funktion... naja ich sollte die halt machen und jetzt eine, um das Memo1.lines > Memo1.lines blablabla zu ersetzen...
reiner lerneffekt.


nicht streiten....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#7

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 16:46
Da nun bereits 2 mögliche Lösungen gepostet wurden, hier meine Umsetzung (die vielen Hilfsvariablen sollen dem Verständnis dienen):
Delphi-Quellcode:
function Min(Wert1, Wert2: integer): integer;
begin
  if Wert1 < Wert2 then
    Result := Wert1
  else
    Result := Wert2;
end;

function MyStrCompare(const Str1, Str2: string): integer;
var
  i, MaxLen, Laenge1, Laenge2, Wert1, Wert2: integer;
begin
  Result := 0;
  i := 1;
  Laenge1 := Length(Str1);
  Laenge2 := Length(Str2);
  MaxLen := Min(Laenge1, Laenge2);
  while (i <= MaxLen) and (Result = 0) do
    begin
      Wert1 := CharToInt(Str1[i]);
      Wert2 := CharToInt(Str2[i]);
      Result := Wert1 - Wert2;
      i := i + 1;
    end;
  if Result = 0 then
    Result := Laenge1 - Laenge2;
end;
Im ButtonClick dann
Delphi-Quellcode:
  for j:=0 to Memo1.Lines.count -2 do
  begin
    for i:=j +1 to Memo1.Lines.Count -1 do
    begin
      if MyStrCompare(Memo1.Lines[j], Memo1.Lines[i]) > 0 then
        //tauschen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
biby90
(Gast)

n/a Beiträge
 
#8

AW: funktion erstellen... weiß nicht weiter

  Alt 16. Aug 2011, 16:52
na das sieht doch schon eher nach dem aus was ich brauche. danke ich versuchs mal
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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