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

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

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

Всех приветствую! Мне необходимо было найти реализацию шифра Виженера на языке Pascal, я её нашёл. Именно с применением одномерных массивов и так далее, то есть прикреплённый код (ниже) полностью устраивает. Результат работы следующий: Введите ключ: "lemon". Введите исходное слово: "secret". Зашифрованное слово (результат): "[d,i,o,f,r,e,". Так вот, всё высчитывает верно, но мне необходимо, чтобы результат выводился без квадратной скобки и запятых: "diofre". Можете исправить код в нужном месте, если нет времени, то, хотя бы намекните, где, что исправить. Заранее спасибо. Буду благодарен тому, кто поможет!
Листинг программы
  1. var
  2. a,kl,sh:string;
  3. th: array[1..255] of Char;
  4. ch,dh,ah:array[1..255] of integer;
  5. l,d,i,i2:integer;
  6. BEGIN
  7. i2:=0;
  8. writeln('Введите ключ:');
  9. readln(kl);
  10. writeln('Введите исходное слово:');
  11. readln(sh);
  12. l:=Length(kl);
  13. for i:=1 to l do
  14. case kl[i] of
  15. 'a': ch[i]:=0;
  16. 'b': ch[i]:=1;
  17. 'c': ch[i]:=2;
  18. 'd': ch[i]:=3;
  19. 'e': ch[i]:=4;
  20. 'f': ch[i]:=5;
  21. 'g': ch[i]:=6;
  22. 'h': ch[i]:=7;
  23. 'i': ch[i]:=8;
  24. 'j': ch[i]:=9;
  25. 'k': ch[i]:=10;
  26. 'l': ch[i]:=11;
  27. 'm': ch[i]:=12;
  28. 'n': ch[i]:=13;
  29. 'o': ch[i]:=14;
  30. 'p': ch[i]:=15;
  31. 'q': ch[i]:=16;
  32. 'r': ch[i]:=17;
  33. 's': ch[i]:=18;
  34. 't': ch[i]:=19;
  35. 'u': ch[i]:=20;
  36. 'v': ch[i]:=21;
  37. 'w': ch[i]:=22;
  38. 'x': ch[i]:=23;
  39. 'y': ch[i]:=24;
  40. 'z': ch[i]:=25;
  41. end;
  42. for i:=1 to Length(sh) do
  43. begin
  44. case sh[i] of
  45. 'a': dh[i]:=0;
  46. 'b': dh[i]:=1;
  47. 'c': dh[i]:=2;
  48. 'd': dh[i]:=3;
  49. 'e': dh[i]:=4;
  50. 'f': dh[i]:=5;
  51. 'g': dh[i]:=6;
  52. 'h': dh[i]:=7;
  53. 'i': dh[i]:=8;
  54. 'j': dh[i]:=9;
  55. 'k': dh[i]:=10;
  56. 'l': dh[i]:=11;
  57. 'm': dh[i]:=12;
  58. 'n': dh[i]:=13;
  59. 'o': dh[i]:=14;
  60. 'p': dh[i]:=15;
  61. 'q': dh[i]:=16;
  62. 'r': dh[i]:=17;
  63. 's': dh[i]:=18;
  64. 't': dh[i]:=19;
  65. 'u': dh[i]:=20;
  66. 'v': dh[i]:=21;
  67. 'w': dh[i]:=22;
  68. 'x': dh[i]:=23;
  69. 'y': dh[i]:=24;
  70. 'z': dh[i]:=25;
  71. end;
  72. end;
  73. for i:=1 to Length(sh) do
  74. begin
  75. if (i <= l) then
  76. ah[i] := ch[i] + dh[i]
  77. else
  78. if ((i mod l) <> 0) then
  79. ah[i] := ch[i mod l] + dh[i]
  80. else
  81. ah[i] := ch[Length(kl)] + dh[i];
  82. if (ah[i]>25) then
  83. ah[i]:=ah[i]-26;
  84. end;
  85. for i:=1 to Length(sh) do
  86. begin
  87. case ah[i] of
  88. 0: th[i]:='a';
  89. 1: th[i]:='b';
  90. 2: th[i]:='c';
  91. 3: th[i]:='d';
  92. 4: th[i]:='e';
  93. 5: th[i]:='f';
  94. 6: th[i]:='g';
  95. 7: th[i]:='h';
  96. 8: th[i]:='i';
  97. 9: th[i]:='j';
  98. 10: th[i]:='k';
  99. 11: th[i]:='l';
  100. 12: th[i]:='m';
  101. 13: th[i]:='n';
  102. 14: th[i]:='o';
  103. 15: th[i]:='p';
  104. 16: th[i]:='q';
  105. 17: th[i]:='r';
  106. 18: th[i]:='s';
  107. 19: th[i]:='t';
  108. 20: th[i]:='u';
  109. 21: th[i]:='v';
  110. 22: th[i]:='w';
  111. 23: th[i]:='x';
  112. 24: th[i]:='y';
  113. 25: th[i]:='z';
  114. end;
  115. end;
  116. writeln('Зашифрованное слово: ');
  117. writeln(th);
  118. readln;
  119. end.

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

textual
Листинг программы
  1. var
  2.   a,kl,sh:string;
  3.   th: array[1..255] of Char;
  4.   ch,dh,ah:array[1..255] of integer;
  5.   l,d,i,i2:integer;
  6. BEGIN
  7.  
  8.   i2:=0;
  9.   writeln('Введите ключ:');
  10.   readln(kl);
  11.   writeln('Введите исходное слово:');
  12.   readln(sh);
  13.   l:=Length(kl);
  14.  
  15.   for i:=1 to l do
  16.     case kl[i] of
  17.       'a': ch[i]:=0;
  18.       'b': ch[i]:=1;
  19.       'c': ch[i]:=2;
  20.       'd': ch[i]:=3;
  21.       'e': ch[i]:=4;
  22.       'f': ch[i]:=5;
  23.       'g': ch[i]:=6;
  24.       'h': ch[i]:=7;
  25.       'i': ch[i]:=8;
  26.       'j': ch[i]:=9;
  27.       'k': ch[i]:=10;
  28.       'l': ch[i]:=11;
  29.       'm': ch[i]:=12;
  30.       'n': ch[i]:=13;
  31.       'o': ch[i]:=14;
  32.       'p': ch[i]:=15;
  33.       'q': ch[i]:=16;
  34.       'r': ch[i]:=17;
  35.       's': ch[i]:=18;
  36.       't': ch[i]:=19;
  37.       'u': ch[i]:=20;
  38.       'v': ch[i]:=21;
  39.       'w': ch[i]:=22;
  40.       'x': ch[i]:=23;
  41.       'y': ch[i]:=24;
  42.       'z': ch[i]:=25;
  43.     end;
  44.   for i:=1 to Length(sh) do
  45.     begin
  46.       case sh[i] of
  47.         'a': dh[i]:=0;
  48.         'b': dh[i]:=1;
  49.         'c': dh[i]:=2;
  50.         'd': dh[i]:=3;
  51.         'e': dh[i]:=4;
  52.         'f': dh[i]:=5;
  53.         'g': dh[i]:=6;
  54.         'h': dh[i]:=7;
  55.         'i': dh[i]:=8;
  56.         'j': dh[i]:=9;
  57.         'k': dh[i]:=10;
  58.         'l': dh[i]:=11;
  59.         'm': dh[i]:=12;
  60.         'n': dh[i]:=13;
  61.         'o': dh[i]:=14;
  62.         'p': dh[i]:=15;
  63.         'q': dh[i]:=16;
  64.         'r': dh[i]:=17;
  65.         's': dh[i]:=18;
  66.         't': dh[i]:=19;
  67.         'u': dh[i]:=20;
  68.         'v': dh[i]:=21;
  69.         'w': dh[i]:=22;
  70.         'x': dh[i]:=23;
  71.         'y': dh[i]:=24;
  72.         'z': dh[i]:=25;
  73.       end;
  74.     end;
  75.   for i:=1 to Length(sh) do
  76.     begin
  77.       if (i <= l) then
  78.         ah[i] := ch[i] + dh[i]
  79.       else
  80.         if ((i mod l) <> 0) then
  81.           ah[i] := ch[i mod l] + dh[i]
  82.         else
  83.           ah[i] := ch[Length(kl)] + dh[i];
  84.       if (ah[i]>25) then
  85.         ah[i]:=ah[i]-26;
  86.     end;
  87.  
  88.   for i:=1 to Length(sh) do
  89.     begin
  90.       case ah[i] of
  91.         0: th[i]:='a';
  92.         1: th[i]:='b';
  93.         2: th[i]:='c';
  94.         3: th[i]:='d';
  95.         4: th[i]:='e';
  96.         5: th[i]:='f';
  97.         6: th[i]:='g';
  98.         7: th[i]:='h';
  99.         8: th[i]:='i';
  100.         9: th[i]:='j';
  101.         10: th[i]:='k';
  102.         11: th[i]:='l';
  103.         12: th[i]:='m';
  104.         13: th[i]:='n';
  105.         14: th[i]:='o';
  106.         15: th[i]:='p';
  107.         16: th[i]:='q';
  108.         17: th[i]:='r';
  109.         18: th[i]:='s';
  110.         19: th[i]:='t';
  111.         20: th[i]:='u';
  112.         21: th[i]:='v';
  113.         22: th[i]:='w';
  114.         23: th[i]:='x';
  115.         24: th[i]:='y';
  116.         25: th[i]:='z';
  117.       end;
  118.     end;
  119. writeln('Зашифрованное слово: ');
  120. for i:=1 to Length(sh) do
  121.   write(th[i]);
  122. readln;
  123. end.

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

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

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


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

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

13   голосов , оценка 4.154 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы