Программа работает , но при расшифровке удаляет пробелы, помогите исправить(программа должна удалять символы которые не входят в алфавит, она их удаляет, но и пробелы тоже удаляются)
Код:
program zi3;
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.