uses
crt;
var s:string;
i:word;
begin
readln(s);
for i:=1 to length(s) do
begin
if (ord(s)>=65) and (ord(s)<=90)then
if ord(s)=90 then s:=chr(65) else s:=chr(ord(s)+1);
if (ord(s)>=97) and (ord(s)<=122)then
if ord(s)=122 then s:=chr(97) else s:=chr(ord(s)+1);
end;
writeln(s);
readln;
end.
Pascal.Шифрование с помощью циклической подстановки.
Задача такого типа:
Дана строка символов (предложение). Зашифровать в ней все латинские символы с помощью циклической подстановки: A=>B=>C…Y=>Z=>A.
если я правильно понял, то A заменяется на B, C на D, вообщем буква заменяется на следующую за ней по алфавиту, ну а последняя на первую, т.е. Z на A, тогда решение будет иметь следующий вид:
Цитата: lazio
Помогите пожалуйста с решением.
Задача такого типа:
Дана строка символов (предложение). Зашифровать в ней все латинские символы с помощью циклической подстановки: A=>B=>C…Y=>Z=>A.
Задача такого типа:
Дана строка символов (предложение). Зашифровать в ней все латинские символы с помощью циклической подстановки: A=>B=>C…Y=>Z=>A.
А вот если я правильно понял то это шифрование методом цезаря.
Код:
function GetSimpleText(ShText: String; KeyCod:integer):String;
//GetSimpleText-номер возвращаемого символа
//ShTex - шифруемый текст.
//KeyCod - Ключ (Как в методе Цезаря) для расшифровки кода (Требуеться не везде)
var
i,LenSh,NumCh,Num,lenCod,b:Integer;
StrRes,StrCod:String;
asd:char;
begin
//шифрование по методу Цезаря начало.
//проверяем каждую букву (разбиваем строку), переводим её в число,
//прибавляем ключ, переводим число в символ, собираем строку.
Begin
LenSh:=Length(ShText);//Возвращаем длину текста
for i:=1 to LenSh do//Создаём цикл пока не закончиться текст(Разбиваем текст на буквы)
Begin
NumCh:=Ord(ShText);//Возвращаем Номер буквы
Num:=NumCh+KeyCod;//Прибавляем к Номеру буквы ключ(Смещение)
if Num<256 then//Если результат получился <256
begin
asd:=chr(Num);//Значит возвращаем букву из символа
StrRes:=StrRes+asd;// Создаём текст
end
else// иначе если результат >255
Begin
asd:=chr(abs((255-num))+31);//Эта строка написана для того, чтобы недопустить значениея о 0 до 31
StrRes:=StrRes+asd;//Создаём строку
end;
end;
end;
//GetSimpleText-номер возвращаемого символа
//ShTex - шифруемый текст.
//KeyCod - Ключ (Как в методе Цезаря) для расшифровки кода (Требуеться не везде)
var
i,LenSh,NumCh,Num,lenCod,b:Integer;
StrRes,StrCod:String;
asd:char;
begin
//шифрование по методу Цезаря начало.
//проверяем каждую букву (разбиваем строку), переводим её в число,
//прибавляем ключ, переводим число в символ, собираем строку.
Begin
LenSh:=Length(ShText);//Возвращаем длину текста
for i:=1 to LenSh do//Создаём цикл пока не закончиться текст(Разбиваем текст на буквы)
Begin
NumCh:=Ord(ShText);//Возвращаем Номер буквы
Num:=NumCh+KeyCod;//Прибавляем к Номеру буквы ключ(Смещение)
if Num<256 then//Если результат получился <256
begin
asd:=chr(Num);//Значит возвращаем букву из символа
StrRes:=StrRes+asd;// Создаём текст
end
else// иначе если результат >255
Begin
asd:=chr(abs((255-num))+31);//Эта строка написана для того, чтобы недопустить значениея о 0 до 31
StrRes:=StrRes+asd;//Создаём строку
end;
end;
end;
отрывок из большой программы шифрования, правда она на DELPHI написана.