Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Chiffre-Problem (https://www.delphipraxis.net/165370-chiffre-problem.html)

Sir Rufo 27. Dez 2011 00:38

AW: Chiffre-Problem
 
so geht das aber nicht, weil nicht einfach nur einzelne Chars getauscht werden sollen, sondern auch strings ;)

Luckie 27. Dez 2011 00:40

AW: Chiffre-Problem
 
Also wenn ich das richtig verstehe:
Zitat:

Wechsel in beiden Richtungen:
t-d
b-p
k-g
t-d
s-z
w - v
i - y
Sollen nur einzelne Zeichen getauscht werden.

Delphi-Quellcode:
function ChiffreString(Klartext: AnsiString): AnsiString;
var
  s: AnsiString;
  i: Integer;
  OrdinalValue: Integer;
begin
  s := KlarText;
  for i := 1 to length(s) do
  begin
    OrdinalValue := Ord(s[i]);
    case OrdinalValue of
      116: s[i] := 'd';
      100: s[i] := 't';
    end;
  end;
  Result := s;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(ChiffreString('dauernt'));
end;
Liefert "tauernd" wie gefordert.

Sir Rufo 27. Dez 2011 00:41

AW: Chiffre-Problem
 
Delphi-Quellcode:
eingabe := StringReplace(eingabe ,'ę','yn',[rfReplaceAll]);

Luckie 27. Dez 2011 00:42

AW: Chiffre-Problem
 
Also dafür, dass sein Code der Beschreibung widerspricht, kann ich nichts.

Sir Rufo 27. Dez 2011 00:43

AW: Chiffre-Problem
 
Zitat:

Zitat von Luckie (Beitrag 1143238)
Also dafür, dass sein Code der Beschreibung widerspricht, kann ich nichts.

das hat auch niemand gesagt ;)
aber der Ansatz war auch mein erster Gedanke :)

Marcel Hans 27. Dez 2011 12:19

AW: Chiffre-Problem
 
Danke für eure Hilfe. Mit letzem Fall (mit yn) gibt es das Problem mit dem Wechsel nicht.
Ich hab das Problem mit der Schleife gelöst:
Code:
var eingabe:string;
index:integer;

begin
eingabe:= memonimm.lines.GetText;
for index := 1 to Length(eingabe) do
begin
    if eingabe[index] = 'd' then eingabe[index]:= 't'
    else if eingabe[index] = 't' then eingabe[index] := 'd';

end;

himitsu 27. Dez 2011 12:23

AW: Chiffre-Problem
 
Bei den vielen Ersetzungen kannst du, statt den vielen IF-THEN-ELSE, auch ein CASE verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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