Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.10.2016, 12:52   #1
Smile189
Пользователь
 
Регистрация: 01.10.2016
Сообщений: 25
По умолчанию Помогите исправить.

Помогите исправить.
Режим расшифровки не работает

Код:
const 
  n=30;
// ЗДЕСЬ код шифрования
procedure DoShifr;
var 
  a,b:array[1..n] of integer;
  s,s1,s2,r:string;
  i, j, p, key:byte;
  m:set of byte;
begin
 
 writeln('Введите текст для шифрования: ');
  readln(s);
  writeln('-------------------------------------------------');
  write('Введите количество цифр в ключе от 2 до ',n,' key= ');
  readln(key);
  while length(s) mod key<>0 do s:=s+' ';
  writeln('Введите ключ из ',key,' цифр: ');
  m:=[];
  for i:=1 to key do begin
    repeat
      readln(p);
    until(p in [1..key])and not(p in m);
    a[i]:=p;
   m:=m+[p];
  end;
 
  r:='';
  i:=1;
  while i<=length(s)-key+1 do begin
    s1:=copy(s,i,key);
    s2:='';
    for j:=1 to key do
      s2:=s2+s1[a[j]];
    r:=r+s2;
    i:=i+key;
  end;
  for i:=length(r) downto 1 do
    if r[i]=' ' then delete(r,i,1);
  
  writeln('--------------------------------------------------');
  writeln('Зашифрованный текст: ');
  writeln(r);
  end;
//  код расшифрования
procedure DoRashifr;
var 
  a,b:array[1..n] of integer;
  s,s1,s2,r:string;
  i, j, p, key:byte;
  m:set of byte;
begin
 
writeln('Введите текст для шифрования: ');
  readln(s);
  writeln('-------------------------------------------------');
  write('Введите количество цифр в ключе от 2 до ',n,' key= ');
  readln(key);
  while length(s) mod key<>0 do s:=s+' ';
  writeln('Введите ключ из ',key,' цифр: ');
  m:=[];
  for i:=1 to key do
       begin
        for j:=1 to key do
        if a[j]=i then b[i]:=j
       end;
      s:=r;
      while length(s) mod key<>0 do s:=s+' ';
      r:='';
      i:=1;
      while i<=length(s)-key+1 do
       begin
        s1:=copy(s,i,key);
        s2:='';
        for j:=1 to key do
        s2:=s2+s1[b[j]];
        r:=r+s2;
        i:=i+key;
       end;
      for i:=length(r) downto 1 do
      if r[i]=' ' then delete(r,i,1);
      writeln('Расшифрованный текст');
      writeln(r);
end;
 
 
 
 
var
  vkey:  integer;
begin
  repeat
    writeln('укажите режим работы:1-шифр. 2-расш. 0-закончить работу:');
    readln(vkey);
    case vkey of
    1: DoShifr;
    2: DoRashifr;
    0: ;//ничего не делаем и выходим по until
    else writeln('выбран несуществующий режим работы');
    end;
  until vkey<>0;
end.
Smile189 вне форума
Старый 02.10.2016, 21:46   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
writeln('Введите текст для шифрования: '); // наверное для РАСшифрования ?
  readln(s); //вводим
  writeln('-------------------------------------------------');
  write('Введите количество цифр в ключе от 2 до ',n,' key= ');
  readln(key); //вводим
  while length(s) mod key<>0 do s:=s+' ';
  writeln('Введите ключ из ',key,' цифр: ');
??? ГДЕ вводим
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить Virus' Помощь студентам 3 09.12.2008 17:21
помогите исправить Aivar Помощь студентам 12 11.11.2008 20:04
Помогите исправить L_M Помощь студентам 3 08.06.2008 01:06