Re: Hilfe:Caesar-Verfahren
wie ist es damit?
Delphi-Quellcode:
const rotation: Integer=3;
function decode(s: string):string; var i: Integer; begin Result:=''; for i:=1 to Length(s) do begin if Upcase(s[i]) in ['A'..'Z'] then Result:=Result+chr((Ord(Upcase(s[i]))-Ord('A')+rotation) mod 26+Ord('A')) else Result:=Result+s[i]; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit2.Text:=decode(Edit1.Text); end; |
Re: Hilfe:Caesar-Verfahren
Zitat:
(An mod hatte ich in dem Moment gar nicht gedacht ;-)) |
Re: Hilfe:Caesar-Verfahren
@ Mabuse:
Ein mod ist hier aber falsch, da du bei der Mod-Funktion die '0' als Ergebniss erhalten kannst. Wenn du also das Y mit dem A verschlüsselst, und dann Mod 24 anwendest, bekommst du als Ergebniss 0 und nicht 25. Also ist der Ansatz mit if
Delphi-Quellcode:
der richtige, um die Zahlen in der Menge [1..24] einzusperren.
if Zahl>24 Then Zahl:=Zahl-24;
|
Re: Hilfe:Caesar-Verfahren
Zitat:
Warum, MOD ist doch der Rest einer ganzzahligen Division. Angenommen wir wollen Ziffern verschlüsseln. um 5 Stellen
Code:
Passt doch !!!
0 -> 5 : 0 + 5 = 5 : 5 mod 10 = 5
1 -> 6 : 1 + 5 = 6 : 6 mod 10 = 6 2 -> 7 : 2 + 5 = 7 : 7 mod 10 = 7 3 -> 8 : 3 + 5 = 8 : 8 mod 10 = 8 4 -> 9 : 4 + 5 = 9 : 9 mod 10 = 9 5 -> 0 : 5 + 5 = 10 : 10 mod 10 = 0 6 -> 1 : 6 + 5 = 11 : 11 mod 10 = 1 7 -> 2 : 7 + 5 = 12 : 12 mod 10 = 2 8 -> 3 : 8 + 5 = 13 : 13 mod 10 = 3 9 -> 4 : 9 + 5 = 14 : 14 mod 10 = 4
Delphi-Quellcode:
Stimmt !!!
Result := Result + chr( (Ord( Upcase(s[i]) ) - Ord('A') + rotation) mod 26 + Ord('A') )
Ord( Upcase(s[i]) ) - Ord('A') // => 0 für A, 1 für B, ... und 25 für Z rotation := 3 (Ord( Upcase(s[i]) ) - Ord('A') + rotation) // => 3 für A, ... und 28 für Z (Ord( Upcase(s[i]) ) - Ord('A') + rotation) mod 26 // => 3 mod 26 = 3 für A, ... 28 mod 26 = 2 = Z chr( (Ord( Upcase(s[i]) ) - Ord('A') + rotation) mod 26 + Ord('A') ) // = D für A, E für B, ... und C für Z [edit] Zitat:
Delphi-Quellcode:
ist absolut identisch mit
if (zahl>24) and (zahl<=48) then zahl := zahl - 24;
Delphi-Quellcode:
ps: warum hat Dein Alphabet nur 24 Buchstaben ?
zahl := zahl mod 24;
[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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