ЭВМ очень подходит для зашифровки и расшифровки тайнописи. Есть много способов шифровки. Один из самых простых - шифр Цезаря. Его суть - скачок через две буквы: i-я буква алфавита заменяется на (i+2)-ю букву (предпоследняя буква алфавита заменяется на первую, а последняя - на вторую букву алфавита).
Например, русская пословица
КОНЧИЛ ДЕЛО, ГУЛЯЙ СМЕЛО
была бы зашифрована следующим образом:МРПЩКН ЁЖНР ЕХНБЛ УОЖНР
Составим программу зашифровки русского текста кодом Цезаря.
Program Shifr;
const n=32; {число букв в алфавите}
var x:char;
begin
while not eof do
begin
read(x);
if x in ['А'..'Я'] then
write (chr((ord(x)-ord('А')+2) mod n+ord('А')))
else write(x);
if eoln then writeln
end
end.
Последний оператор включен в цикл для того, чтобы программа распологала шифрованным текстом в таких же строках, что и исходный текст.Эта программа подходит для шифровки текста только на тех языках, алфавит которых совпадает с алфавитом ЭВМ, выполняющей программу.
2012-06-24 • Просмотров [ 27635 ]
2. В русском языке 33 буквы.
var
n, i: integer;
s: string;
begin
writeln ('Введите зашифрованный текст');
readln (s);
writeln ('Введите текст сдвиг?');
readln (n);
write('Расшифрованное сообщение: ');
for i := 1 to length(s) do
begin
if s[i] in ['а'..'я']
then if (ord(s[i]) + n) < ord('я')
then s[i] := chr(ord(s[i]) - n)
else s[i] := chr(ord('а') + (ord(s[i]) - n + ord('а'))mod 32)
else if s[i] in ['А'..'Я'] then
if (ord(s[i]) + n) < ord('Я')
then s[i] := chr(ord(s[i]) - n)
else s[i] := chr(ord('А') + (ord(s[i]) - n + ord('А'))mod 32);
write(s[i])
end
end.
var
n, i: integer;
s: string;
begin
writeln ('Введите текст');
readln (s);
writeln ('Введите текст сдвиг?');
readln (n);
write('Зашифрованное сообщение: ');
for i := 1 to length(s) do
begin
if s[i] in ['а'..'я']
then if (ord(s[i]) + n) < ord('я')
then s[i] := chr(ord(s[i]) + n)
else s[i] := chr(ord('а') + (ord(s[i]) + n - ord('а'))mod 32)
else if s[i] in ['А'..'Я'] then
if (ord(s[i]) + n) < ord('Я')
then s[i] := chr(ord(s[i]) + n)
else s[i] := chr(ord('А') + (ord(s[i]) + n - ord('А'))mod 32);
write(s[i])
end
end.
пишите заглавным регистром или поменяйте на if x in ['а'..'я'] then