Исходным текстом, как и в предыдущем методе, является содержимое файла ishodn.txt. Этот файл также используется для метода Виженера и одноразового блокнота. Ключ вводится пользователем.
Текст программы (LR2.pas)
Program Shifrovka_Cesar;
uses crt;
type ftype = text;
const n=224;
var
fs,fe,fd: ftype;
str,str2: string;
k,s,e,d,i: integer;
m: char;
begin
clrscr;
writeln (' Шифровка/Дешифровка методом Цезаря ');
writeln ('1 - Шифровка');
writeln ('2 - Дешифровка');
writeln ('0 - Выход');
repeat
m:=readkey;
if (m='1') or (m='2') then
begin
repeat
write ('Введите ключ от 1 до 223: ');
readln(k);
until (k>=1) and (k<=223);
end;
case m of
'1':
begin
assign (fs,'ishodn.txt'); reset(fs);
assign (fe,'zashifr2.txt'); rewrite(fe);
while not eof(fs) do
begin
readln(fs,str);
str2:='';
for i:=1 to length(str) do
begin
s:=ord(str[i]);
if s>=32 then e:=((s-32+k) mod n) + 32
else e:=s;
str2:=str2+chr(e);
end;
if not(eof(fs)) then writeln(fe,str2)
else write(fe,str2);
end;
close(fs); close(fe);
writeln('Текст зашифрован');
end;
'2':
begin
assign (fe,'zashifr2.txt'); reset(fe);
assign (fd,'desh2.txt'); rewrite(fd);
while not eof(fe) do
begin
readln(fe,str);
str2:='';
for i:=1 to length(str) do
begin
e:=ord(str[i]);
if e>=32 then d:=(e-32+n-k) mod n + 32
else d:=e;
str2:=str2+chr(d);
end;
if not(eof(fe)) then writeln(fd,str2)
else write(fd,str2);
end;
close(fe); close(fd);
writeln('Текст дешифрован');
end;
end;
until m='0';
end.