Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Программа работает, но при расшифровке удаляет пробелы (http://www.tehnari.ru/f41/t249699/)

Smile188 30.10.2016 00:20

Программа работает, но при расшифровке удаляет пробелы
 
Программа работает , но при расшифровке удаляет пробелы, помогите исправить(программа должна удалять символы которые не входят в алфавит, она их удаляет, но и пробелы тоже удаляются)

Код:

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.


Vladimir_S 06.11.2016 08:56

Цитата:

Сообщение от Smile188 (Сообщение 2428846)
Программа работает , но при расшифровке удаляет пробелы, помогите исправить(программа должна удалять символы которые не входят в алфавит, она их удаляет, но и пробелы тоже удаляются)

Сформулируйте, пожалуйста, задание ПОЛНОСТЬЮ: тут, мне кажется, легче написать свою программу, чем исправлять Вашу.


Часовой пояс GMT +4, время: 07:13.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.