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.
Другие языки программирования и технологии
помогите написать программу в Турбо Паскале, Шифр цезаря,с сдвигом на три шага!!!!
ето если к коду 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)
----
Если велечина не константа, а напр переменная результата ф-ции, ето уже другой метод,
напр пробел, ето 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)
----
Похожие вопросы
- Помогите написать программу в Турбо паскале.
- Помогите написать программу для турбо паскаля
- Помогите написать программу в турбо паскале (по возможности и блок-схему)
- Помогите составить программу на Турбо Паскале! ПЛИЗЗ!!
- Помогите пожалуйста! помогите написать программу на языке паскаль
- Помогите написать программу! Турбо Паскаль 7.0
- Помогите решить задачу на Турбо паскале
- Помогите где ошибка в программе на турбо паскале?
- Мне завтра рассказывать программы по турбо паскаль,помогите разьяснить задачи по каждой строчке
- Помогите сделать анимацию в программе в турбо Паскаль