Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Sortieralgorithmen (https://www.delphipraxis.net/162274-sortieralgorithmen.html)

biby90 15. Aug 2011 15:52

Delphi-Version: 5

Sortieralgorithmen
 
hallo leute,
ja ich weiß die schon wieder :-)
heute muss ich eine funktion schreiben, die das vergleichen von 2 zeilen ersetzen soll (wenn ihr euch noch an den bubblesort von freitag erinnert)
Delphi-Quellcode:
unit sortieren;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  function Sort(ASrcA, ASrcD: String): Integer;
  function CharToInt(AValue: Char): Integer;

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  CharTable: array[0..25] of Char =
    ('A','B', 'C', 'D', 'E', 'F', 'G', 'H', 'I','J', 'K', 'L', 'M', 'N', 'O',
      'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');



implementation


{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : Integer; //Position
  Buffer: String; //speicher
begin
  for j := 0 to Memo1.lines.count -2 do
  begin
    for i := j+1 to Memo1.Lines.Count -1 do
    begin
      if Memo1.Lines[j] > Memo1.lines[i] then  //soll mit funktion Sort ausgetauschen werden
      begin
        Buffer := Memo1.lines[j];
        Memo1.Lines[j] := Memo1.Lines[i];
        Memo1.Lines[i] := Buffer;
      end;
    end;
  end;
end;

function TForm1.CharToInt(AValue: Char): Integer;
var
  i : Integer;
begin
  Result := -1;
  for i := 1 to length(CharTable) do
  begin
    if CharTable[i] = AValue then
    begin
      Result := i;
      Break;
    end;
  end;
end;

function TForm1.Sort(ASrcA, ASrcD: String): Integer; // komme ab hier nicht weiter
var
  i: Integer;
  s: String;
begin
  Result := -1;
  for i := 1 to Length(CharTable) do

end;

end.
wenn ihr es euch mal ansehen könntet... über einen tipp würde ich mich freuen!

DeddyH 15. Aug 2011 15:56

AW: funktion erstellen... weiß nicht weiter
 
Hier kommt der Tipp *Trommelwirbel*: http://docwiki.embarcadero.com/VCL/d...istSortCompare
Schau Dir im Besonderen einmal die Rückgabewerte an.

biby90 15. Aug 2011 16:06

AW: funktion erstellen... weiß nicht weiter
 
theoretisch versteh ich es.... aber praktisch ist so eine Sache... ich probier mal rum.

DeddyH 15. Aug 2011 16:26

AW: funktion erstellen... weiß nicht weiter
 
Wenn es nur um das Vergleichen geht, würde ich die Funktion Compare nennen. Im ButtonClick könnte das dann später so aussehen:
Delphi-Quellcode:
for j := 0 to Memo1.lines.count -2 do
  begin
    for i := j+1 to Memo1.Lines.Count -1 do
    begin
      if Compare(Memo1.Lines[j], Memo1.Lines[i]) > 0 then

biby90 16. Aug 2011 09:26

AW: funktion erstellen... weiß nicht weiter
 
ich soll ja eine funktion erstellen die alle werte auf einmal vergleicht.

DeddyH 16. Aug 2011 09:32

AW: funktion erstellen... weiß nicht weiter
 
Das macht keinen Sinn. Oder soll die Funktion auch gleich das Tauschen und somit die komplette eigentliche Sortierung übernehmen?

biby90 16. Aug 2011 09:44

AW: funktion erstellen... weiß nicht weiter
 
nein eigentlich nur das vergleichen ich denke dass mein ausbilder mir bloß die funktionen näher bringen will.

DeddyH 16. Aug 2011 09:57

AW: funktion erstellen... weiß nicht weiter
 
Dann erklär doch einmal, was genau Deine Funktion vergleichen und vor allem, was sie zurückgeben soll (Minimum, Maximum oder was?).

biby90 16. Aug 2011 10:06

AW: funktion erstellen... weiß nicht weiter
 
also sie soll eben alle werte in einem Wort vergleichen und das Höchste auf eine Stelle höhersetzen... aber das soll ja im endeffekt nicht mit in die funktion. die funktion soll eben nur jeden einzelnen buchstaben eines worten mit den einzelnen buchstaben vom zweiten wort usw. vergleichen

DeddyH 16. Aug 2011 10:09

AW: funktion erstellen... weiß nicht weiter
 
Einen String kannst Du wie ein Array durchlaufen, um die einzelnen Buchstaben zu ermitteln. Und den ASCII-Code eines Buchstaben erhältst Du mit Delphi-Referenz durchsuchenOrd().


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Seite 1 von 8  1 23     Letzte »    

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