Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: Fehler im Sortier-Algorythmus

  Alt 7. Okt 2004, 16:05
Hi Martin,

ich habe mir Daniels Prozedur aus dem Sortieralgorithmen-Tut ausgeliehen, und die Funktion ein bisschen umgeschrieben. Jetzt werden die Daten absteigend sortiert:
Delphi-Quellcode:
procedure TForm1.NewBubbleSort(tStr: TStrings);
var i, j, n : Integer;
    tag1, monat1, jahr1, tag2, monat2, jahr2: integer;
    Data: array of String;
    s, temp: String;
begin
  SetLength(Data, tStr.Count);
  for i := 0 to tStr.Count-1 do
    Data[i] := tStr[i];
  n := tStr.Count-1;
  for i:= n downto 1 do
  begin
    for j:= 1 to i do
    begin

      s:=Data[j];
      delete(s,1,pos('-',s));
      delete(s,1,pos('-',s));
      jahr1:=strtoint(s);

      {Der Monat wird aus 1 herausgeschnitten}
      s:=Data[j];
      delete(s,1,pos('-',s));
      delete(s,pos('-',s),length(s));
      monat1:=strtoint(s);

      {Der Tag wird aus 1 herausgeschnitten}
      s:=Data[j];
      delete(s,pos('-',s),length(s));
      tag1:=strtoint(s);

      {Das Jahr wird aus 2 herausgeschnitten}
      s:=Data[j-1];
      delete(s,1,pos('-',s));
      delete(s,1,pos('-',s));
      jahr2:=strtoint(s);

      {Der Monat wird aus 2 herausgeschnitten}
      s:=Data[j-1];
      delete(s,1,pos('-',s));
      delete(s,pos('-',s),length(s));
      monat2:=strtoint(s);

      {Der Tag wird aus 2 herausgeschnitten}
      s:=Data[j-1];
      delete(s,pos('-',s),length(s));
      tag2:=strtoint(s);

      {Jahr vergleichen}
      if jahr1 > jahr2 then
      begin
        temp := Data[j-1];
        Data[j-1] := Data[j];
        Data[j] := temp;
      end;
      if jahr1 = jahr2 then
      begin
        if monat1 > monat2 then
        begin
          temp := Data[j-1];
          Data[j-1] := Data[j];
          Data[j] := temp;
        end;
        if monat1 = monat2 then
        begin
          if tag1 > tag2 then
          begin
            temp := Data[j-1];
            Data[j-1] := Data[j];
            Data[j] := temp;
          end;
        end;
      end;
    end;
  end;
  for i := 0 to tStr.Count-1 do
    ListBox2.Items.Add(Data[i]);
end;
Hoffe es passt.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat