Шифр Виженера. Устранить скобку и запятые в результате - Pascal ABC
Формулировка задачи:
Решение задачи: «Шифр Виженера. Устранить скобку и запятые в результате»
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. Затем код выводит зашифрованное слово. Код использует вложенные циклы для обработки каждой буквы ключа и исходного слова. Внутренний цикл выполняется столько раз, сколько букв в исходном слове, а внешний цикл обеспечивает перебор каждой буквы ключа. Для каждой буквы ключа и исходного слова код проверяет, является ли текущая позиция больше длины ключа. Если это так, то код использует последнюю букву ключа для шифрования. Если нет, то код использует текущую букву ключа. Для каждой буквы исходного слова код проверяет, является ли текущая позиция больше длины исходного слова. Если это так, то код использует последнюю букву исходного слова для шифрования. Если нет, то код использует текущую букву исходного слова. Для каждой буквы шифрованного слова код проверяет, является ли текущая позиция больше длины исходного слова. Если это так, то код использует последнюю букву исходного слова для шифрования. Если нет, то код использует текущую букву исходного слова. В конце кода выводится зашифрованное слово.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д