|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Программа работает, но при расшифровке удаляет пробелы
Программа работает , но при расшифровке удаляет пробелы, помогите исправить(программа должна удалять символы которые не входят в алфавит, она их удаляет, но и пробелы тоже удаляются)
Код:
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. |
#2
|
|||
|
|||
Удаляет не при расшифровке, а при шифровании.
Надо в алфавит соотв функции добавить пробел: Код:
function Cesar_Crypt(s: string): string; const SizeA = 34; RusA = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя '; |