Шифр Виженера. Устранить скобку и запятые в результате - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Всех приветствую! Мне необходимо было найти реализацию шифра Виженера на языке Pascal, я её нашёл. Именно с применением одномерных массивов и так далее, то есть прикреплённый код (ниже) полностью устраивает. Результат работы следующий: Введите ключ: "lemon". Введите исходное слово: "secret". Зашифрованное слово (результат): "[d,i,o,f,r,e,". Так вот, всё высчитывает верно, но мне необходимо, чтобы результат выводился без квадратной скобки и запятых: "diofre". Можете исправить код в нужном месте, если нет времени, то, хотя бы намекните, где, что исправить. Заранее спасибо. Буду благодарен тому, кто поможет!

Решение задачи: «Шифр Виженера. Устранить скобку и запятые в результате»

textual
Листинг программы
var
  a,kl,sh:string;
  th: array[1..255] of Char;
  ch,dh,ah:array[1..255] of integer;
  l,d,i,i2:integer;
BEGIN
 
  i2:=0;
  writeln('Введите ключ:');
  readln(kl);
  writeln('Введите исходное слово:');
  readln(sh);
  l:=Length(kl);
 
  for i:=1 to l do
    case kl[i] of
      'a': ch[i]:=0;
      'b': ch[i]:=1;
      'c': ch[i]:=2;
      'd': ch[i]:=3;
      'e': ch[i]:=4;
      'f': ch[i]:=5;
      'g': ch[i]:=6;
      'h': ch[i]:=7;
      'i': ch[i]:=8;
      'j': ch[i]:=9;
      'k': ch[i]:=10;
      'l': ch[i]:=11;
      'm': ch[i]:=12;
      'n': ch[i]:=13;
      'o': ch[i]:=14;
      'p': ch[i]:=15;
      'q': ch[i]:=16;
      'r': ch[i]:=17;
      's': ch[i]:=18;
      't': ch[i]:=19;
      'u': ch[i]:=20;
      'v': ch[i]:=21;
      'w': ch[i]:=22;
      'x': ch[i]:=23;
      'y': ch[i]:=24;
      'z': ch[i]:=25;
    end;
  for i:=1 to Length(sh) do
    begin
      case sh[i] of
        'a': dh[i]:=0;
        'b': dh[i]:=1;
        'c': dh[i]:=2;
        'd': dh[i]:=3;
        'e': dh[i]:=4;
        'f': dh[i]:=5;
        'g': dh[i]:=6;
        'h': dh[i]:=7;
        'i': dh[i]:=8;
        'j': dh[i]:=9;
        'k': dh[i]:=10;
        'l': dh[i]:=11;
        'm': dh[i]:=12;
        'n': dh[i]:=13;
        'o': dh[i]:=14;
        'p': dh[i]:=15;
        'q': dh[i]:=16;
        'r': dh[i]:=17;
        's': dh[i]:=18;
        't': dh[i]:=19;
        'u': dh[i]:=20;
        'v': dh[i]:=21;
        'w': dh[i]:=22;
        'x': dh[i]:=23;
        'y': dh[i]:=24;
        'z': dh[i]:=25;
      end;
    end;
  for i:=1 to Length(sh) do
    begin
      if (i <= l) then
        ah[i] := ch[i] + dh[i]
      else
        if ((i mod l) <> 0) then
          ah[i] := ch[i mod l] + dh[i]
        else
          ah[i] := ch[Length(kl)] + dh[i];
      if (ah[i]>25) then
        ah[i]:=ah[i]-26;
    end;
 
  for i:=1 to Length(sh) do
    begin
      case ah[i] of
        0: th[i]:='a';
        1: th[i]:='b';
        2: th[i]:='c';
        3: th[i]:='d';
        4: th[i]:='e';
        5: th[i]:='f';
        6: th[i]:='g';
        7: th[i]:='h';
        8: th[i]:='i';
        9: th[i]:='j';
        10: th[i]:='k';
        11: th[i]:='l';
        12: th[i]:='m';
        13: th[i]:='n';
        14: th[i]:='o';
        15: th[i]:='p';
        16: th[i]:='q';
        17: th[i]:='r';
        18: th[i]:='s';
        19: th[i]:='t';
        20: th[i]:='u';
        21: th[i]:='v';
        22: th[i]:='w';
        23: th[i]:='x';
        24: th[i]:='y';
        25: th[i]:='z';
      end;
    end;
writeln('Зашифрованное слово: ');
for i:=1 to Length(sh) do
  write(th[i]);
readln;
end.

Объяснение кода листинга программы

Этот код написан на языке Pascal ABC и реализует шифр Виженера. Он принимает на вход ключ и исходное слово, затем преобразует каждую букву ключа в соответствующую букву алфавита и добавляет ее к соответствующей букве исходного слова. Результат шифрования записывается в массив th. Затем код выводит зашифрованное слово. Код использует вложенные циклы для обработки каждой буквы ключа и исходного слова. Внутренний цикл выполняется столько раз, сколько букв в исходном слове, а внешний цикл обеспечивает перебор каждой буквы ключа. Для каждой буквы ключа и исходного слова код проверяет, является ли текущая позиция больше длины ключа. Если это так, то код использует последнюю букву ключа для шифрования. Если нет, то код использует текущую букву ключа. Для каждой буквы исходного слова код проверяет, является ли текущая позиция больше длины исходного слова. Если это так, то код использует последнюю букву исходного слова для шифрования. Если нет, то код использует текущую букву исходного слова. Для каждой буквы шифрованного слова код проверяет, является ли текущая позиция больше длины исходного слова. Если это так, то код использует последнюю букву исходного слова для шифрования. Если нет, то код использует текущую букву исходного слова. В конце кода выводится зашифрованное слово.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы