• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа работает, но при расшифровке удаляет пробелы

Smile188

Новые
Регистрация
13 Окт 2016
Сообщения
15
Реакции
0
Баллы
0
Программа работает, но при расшифровке удаляет пробелы

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

Код:
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.
 
Программа работает , но при расшифровке удаляет пробелы, помогите исправить(программа должна удалять символы которые не входят в алфавит, она их удаляет, но и пробелы тоже удаляются)
Сформулируйте, пожалуйста, задание ПОЛНОСТЬЮ: тут, мне кажется, легче написать свою программу, чем исправлять Вашу.
 
Назад
Сверху