Другие языки программирования и технологии

помогите написать программу в Турбо Паскале, Шифр цезаря,с сдвигом на три шага!!!!

const
n = 3;

function CaesarEncipher(toCode: string): string;
var i, T: integer;
begin
for i := 1 to length(toCode) do begin
T := (Ord(toCode[ i ]) + n);
if T >= 256 then dec(T, 256);
toCode[ i ] := Chr(T);
end;
CaesarEncipher := toCode;
end;

function CaesarDecipher(toDecode: string): string;
var i, T: integer;
begin
for i := 1 to length(toDecode) do begin
T := (Ord(toDecode[ i ]) - n);
if T < 0 then Inc(T, 256);
toDecode[ i ] := Chr(T);
end;
CaesarDecipher := toDecode;
end;

{ применение: }
var
s: string;

begin
s := CaesarEncipher('just a Caesar');
writeln(s);
writeln('s = ', CaesarDecipher(s));
end.
Вадим Козельников
Вадим Козельников
34 268
Лучший ответ
ето если к коду ascii каждого символа прибавить (отнять) какую то величину, const на протяжении всего выполнения программы.
Если велечина не константа, а напр переменная результата ф-ции, ето уже другой метод,
напр пробел, ето 32, + напр 1 33 ето уже будет другой символ.

========
var
i :integer;
cS :byte;
s :string;
ch :char;
Begin
write('ENTER SOURCE STRING: '); readln(s);
write('ENTER KEY DIGIT >0: '); readln(cS);
wrrite('ENTER "-" or "+"'); readln(ch);

if ch='-' then cs:=cs*-1;
{coding}
for i:=1 to length(s) do s[ i ]:=chr(ord(s[ i ])+Cs);

writeln('CRYPTED STRING: ', s)
end.
===========

для раскодировки наоборот поставить минус вместо +:
{decoding}
for i:=1 to length(s) do s[ i ]:=s[ i ] - Cs;

или там же прописать
------
if ch='-' then cs:=cs*-1;

{DEcoding}
cs:=cs*-1; {cs:=not(cs); тоже самое}
for i:=1 to length(s) do s[ i ]:=chr(ord(s[ i ])+Cs);

writeln('ENCRYPTED STRING: ', s)
----