program
zi3;
{$APPTYPE CONSOLE}
uses
windows,
SysUtils;
function
Cesar_Crypt(s:
string
):
string
;
const
SizeA =
34
;
RusA =
'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
;
var
i, P, n:
integer
;
temp:
string
;
flag:
boolean
;
Q:
string
;
begin
flag:=
false
;
Result :=
' '
;
writeln
(
'введите размер шага'
);
readln(n);
s := AnsiLowerCase(s);
temp :=
''
;
for
i :=
1
to
length(s)
do
if
pos(s[i], RusA) <>
0
then
temp := temp + s[i]
else
flag :=
true
;
if
flag
then
begin
writeln
(
'удалить другие символы да/нет'
);
readln(Q);
if
Q =
'да'
then
s := temp
else
if
Q =
'нет'
then
writeln
(
'неверный ввод. Буквы удалим '
);
begin
s := temp
end
;
end
;
for
i :=
1
to
length(s)
do
begin
P := pos(s[i], RusA) + n;
if
P > SizeA
then
P := P - SizeA;
Result := Result + RusA[P];
end
;
end
;
function
Cesar_DeCrypt(s:
string
):
string
;
const
SizeA =
34
;
RusA =
'абвгдеёжзийклмнопрстуфхцчшщъыьэюя '
;
var
i, P, n:
integer
;
temp:
string
;
flag:
boolean
;
Q:
string
;
begin
flag:=
false
;
Result :=
' '
;
writeln
(
'введите размер шага'
);
readln(n);
s := AnsiLowerCase(s);
temp :=
''
;
for
i :=
1
to
length(s)
do
if
pos(s[i], RusA) <>
0
then
temp := temp + s[i]
else
flag :=
true
;
if
flag
then
begin
writeln
(
'удалить другие символы да/нет'
);
readln(Q);
if
Q =
'да'
then
s := temp
else
if
Q =
'нет'
then
writeln
(
'неверный ввод. Буквы удалим '
);
begin
s := temp
end
;
end
;
for
i:=
1
to
length(s)
do
begin
P:=pos(s[i],RusA)-
3
;
if
P<=
0
then
P:=P+SizeA;
Result:=Result+RusA[P];
end
;
end
;
var
aStr :
String
;
bStr:
string
;
begin
SetConsoleCP(
1251
);
SetConsoleOutputCP(
1251
);
writeln
(
'введите фразу для шифрования '
);
readln ( aStr );
writeln
(
'зашифрованный текст - '
,Cesar_Crypt(aStr));
writeln
(
'введите фразу для дешифрования'
);
readln ( bStr );
writeln
(
'расшифрованный текст - '
,Cesar_DeCrypt(bStr));
readln;
end
.