Bergervei/Pascal-Cäsarverfahren
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
== Der Cäsar-Algorithmus ==
# Teste das Programm mit verschiedenen Eingaben.
# Erkläre mit eigenen Worten, was das Programm macht.
<code hidden>
function caesar_test(klar: string; v: integer): string;
var a, i, ascii: integer;
wort, gross: string;
begin
wort:=''; gross:='';
a:=length(klar);
for i:=1 to a do gross:=gross+uppercase(klar[i]);
for i:=1 to a do
begin
ascii:=gross[i]; //ord noch nicht bekannt, einfach weglassen, dann wird automatisch umgewandelt
if (ascii<91) and (ascii>64) then
begin
ascii:=ascii+v;
while ascii>90 do ascii:=ascii-26;
wort:=wort+chr(ascii);
end
else wort:=wort+'*';
end;
result:=wort;
end;
</code>
<run id="4ea11d8166927">
writeln(caesar_test(inputDialog('Klartext:'), StrToInt(inputDialog('Verschiebezahl:'))));
</run>
== Implementation ==
# Implementiere den beschriebenen Algorithmus derart, dass die Funktion <tt>caesar</tt> sowohl zum Ver- als auch Entschlüsseln gentutzt werden.
<code>
function caesar(klar: string; v, richtung: integer): string;
var a, i, ascii: integer;
wort, gross: string;
begin
wort:=''; gross:='';
a:=length(klar);
for i:=1 to a do gross:=gross+uppercase(klar[i]);
for i:=1 to a do
begin
ascii:=ord(gross[i])+richtung*v;
while ascii>90 do ascii:=ascii-26;
while ascii<65 do ascii:=ascii+26;
wort:=wort+chr(ascii);
end;
result:=wort;
end;
</code>
<check>result:=(caesar('HALLO',2,1)=Caesar_test('HALLO',2));</check>
<run id="4ea11d816698f">writeln(caesar('HALLO',2,1));</run>