Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Buchstaben umsortieren (https://www.delphipraxis.net/67621-buchstaben-umsortieren.html)

cruso 17. Apr 2006 18:52


Buchstaben umsortieren
 
Hi!

Ich müsste wissen, wie ich mit Hilfe von Delphi ein Wort in sich umsortieren kann? Und alles in einer ListBox ausgeben kann?

Beispiel:

KEKS //<- Das ist das erste Wort
EKKS
SKKE
SKEK
...




Und das dann halt für jedes andere X-Beliegbige Wort.

Könnt ihr mir helfen?



MfG
Cruso

Mackhack 17. Apr 2006 18:55

Re: Buchstaben umsortieren
 
Hm,

kannst ne Schleife nehmen und jeden Buchstaben durchgehen und ihn an eine andere Stelle setzen und dann in der ListBox einfuegen!

mkinzler 17. Apr 2006 19:00

Re: Buchstaben umsortieren
 
Was ist genau dein Problem, der Zugriff auf die einzelenen Positionen des strings oder die Kombinatorik?

marabu 17. Apr 2006 19:06

Re: Buchstaben umsortieren
 
Hallo.

Scheinbar geht es um Sortieren und Umkehren. ReverseString() ist Bestandteil der Unit StrUtils und SortedString geht zur Not so:

Delphi-Quellcode:
function SortedString(const s: String): String;
var
  iInner, iOuter: Integer;
  c: Char;
begin
  Result := s;
  for iOuter := 2 to Length(Result) do
    for iInner := Pred(iOuter) downto 1 do
      if Result[iInner] > Result[Succ(iInner)] then
      begin
        c := Result[Succ(iInner)];
        Result[Succ(iInner)] := Result[iInner];
        Result[iInner] := c;
      end else Break;
end;
Ostergrüße vom marabu

glkgereon 17. Apr 2006 19:07

Re: Buchstaben umsortieren
 
alle möglichen Variationen finden?

PermutationenPermutationen

Elvis 17. Apr 2006 19:25

Re: Buchstaben umsortieren
 
Zitat:

Zitat von marabu
Scheinbar geht es um Sortieren und Umkehren. ReverseString() ist Bestandteil der Unit StrUtils und SortedString geht zur Not so:
...

Oder so:
Delphi-Quellcode:
function ReverseString(const input : string) : string;
var
  currentChar,
  outputChar     : PChar;
  beforeFirstChar : Integer;
begin
  if length(input) > 1 then
  begin
    SetLength(Result, length(input));

    beforeFirstChar := Integer(@input[1]) - SizeOf(Char);
    outputChar     := @result[1];
    currentChar    := @input[length(input)];

    while Integer(currentChar) > beforeFirstChar do
    begin
      outputChar^ := currentChar^;
      inc(outputChar);
      dec(currentChar);
    end;
  end
  else
   Result := input;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr.

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