ВУЗ:
Составители:
Рубрика:
9
заглавных букв. ♠
Program Shifr_Cezar;
Uses crt;
Var s:integer; a:char;
Begin
Textbackground(7); Textcolor(blue); Clrscr;
write('Введите величину скачка для шифра Цезаря');
readln(s);
writeln('Введите текст:');
while not eoln do
begin
read(a);
if a in ['А'..'Я']
then write(chr(ord('А')+(ord(a)-ord('А')+s) mod 32))
else write(a);
end;
readkey
End.{Shifr_Cezar}
Познакомимся с более сложным алгоритмом шифрования текстов, осно-
ванным на шифре Цезаря. Алгоритм Гронсфельда предполагает наличие шифра
- ключа, представляющего собой n - значное число. Цифры n-значного числа оп -
ределяют ключи шифра Цезаря (количества букв , через которые делается ска -
чок). Буквы текста разбиваются на группы по n (символы, не являющиеся буква-
ми, игнорируются). Первые буквы в каждой группе шифруются по алгоритму
Цезаря с ключом, равным первой цифре n-значного числа. Вторые буквы в ка-
ждой группе шифруются по алгоритму Цезаря с ключом, равным второй цифре
n-значного числа и т.д.
Задача 5. Шифр Гронсфельда. Зашифруйте русские заглавные буквы в
тексте кодом Гронсфельда. Например, если ключ k=1223, то вместо фразы
УЧЕНЬЕ - СВЕТ! должно получиться ФЩЗРЭЗ - УЕЖФ!
Обратите внимание на то, что одни и те же буквы шифруются по -
разному!
♣ Для шифрования символа a по алгоритму Цезаря с ключом с напишем
функцию Shifr(a:char; c:cifra):char. В основной программе цифры ключа k запи-
шем в одномерный массив kod:array[0..n-1]. Читая текст, будем считать количе-
ство русских заглавных букв в переменной i . Остаток от целочисленного деле-
ния i на n определяет позицию буквы в группе. Следовательно, ключом шифра
Цезаря для буквы является цифра из массива kod, стоящая под номером, рав-
ным позиции буквы в группе. ♠
Program Shifr_Gronsfeld;
Uses crt;
Const n=5;
Type cifra=0..9;
Var i,k:integer; kod:array[0..n-1] of cifra; a:char;
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »