![]() |
cäsar 1,2,3
hey,
ich möchte bei meiner cäser verschlüsselung erreichen das der 1 buchstabe um 1 der 2 um 2 und 3 um 3, sowie 4wieder 1 und der 5 um 2, also ich denke ihr wisst was ich meine
Delphi-Quellcode:
problem ist halt nur das er jetzt immer nur um 1 erhöht, erläuft den z algo halt gleich komplett durch, wie kann ich das um gehen, in dem dazwischen immer schon um 1 rauft zähle in der for schleife also keine ahnung ob ich da drauf ein fluss nehmen kann?
function verschluesselung1(text:string;b:integer):string ;
var i,a,z : integer; var ergtext : string; begin z:=1; for i := 1 to length(text) do begin a:= ord(text[i]); a:=a+z; if z=1 then z:=z+1; if z=2 then z:=z+1; if z=3 then z:=1; ergtext:=ergText+chr(a); end; result:=ergtext; verschluesselung1:= ergtext; end; mfg max |
Re: cäsar 1,2,3
Hallo,
überleg dir mal was z nach deinen ganzen If-Anweisungen für einen Wert hat. Du startest mit z = 1. In der ersten If-Anweisung wird z = 2. In der zweiten If-Anweisung wird, wenn z = 2 ist, z um 1 auf 3 erhöht. In der dritten If-Anweisung wird bei z = 3, z auf 1 gesetzt. Im nächsten Durchlauf der Schleife hat z am Anfang wieder eine 1. Mit anderen Worten, vor den If-Anweisungen und nach den If-Anweisungen hat z immer 1. Du solltest die If-Anweisungen mit else verknüpfen, oder noch besser mit case.
Delphi-Quellcode:
z:=1;
for i := 1 to length(text) do begin a:= ord(text[i]); a:=a+z; case z of 1,2: inc(z); //bei 1 oder 2 um eins erhöhen 3 : z := 1; //bei 3 z auf eins setzen end; |
Re: cäsar 1,2,3
ah super das case ist ne super sache funktioniert eins ah, allerherzlichsten dank
|
Re: cäsar 1,2,3
ansonsten hätten auch zumindestens ein paar ELSE gereicht
Delphi-Quellcode:
[edit] ich seh grad, das mit else wurde doch schon gesagt ... nja, nun isses auch mal als Beispiel da [/edit]
if z=1 then z:=z+1
else if z=2 then z:=z+1 else if z=3 then z:=1; und man braucht nichtmal ein ganzes CASE ... ein einfaches IF wäre auch gegangen :angel:
Delphi-Quellcode:
oder
if z<3 then z:=z+1 else z:=1;
Delphi-Quellcode:
if z<3 then inc(z) else z:=1;
|
Re: cäsar 1,2,3
Falls du es mal brauchst...
Delphi-Quellcode:
MfG
function Caesar( const Buffer: String; const Digits: Byte; const Right: Boolean = True;
const _MinVal: Byte = 32; const _MaxVal: Byte = 132 ): String; var i, x: Integer; function InRange(const Value, _Start, _End: Cardinal): Cardinal; begin if Value in [_Start.._End] then Result := Value else if Value < _Start then Result := InRange( _End - _Start + Value+1, _Start, _End ) else if Value > _End then Result := InRange( _Start + Value - _End-1, _Start, _End ); end; begin if Right then x := 1 else x := -1; SetLength( Result, Length(Buffer) ); for i := 1 to Length(Buffer) do Result[i] := Chr( Byte( InRange( Ord( Buffer[i] ) + Digits*X, _MinVal, _MaxVal ) ) ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz