1. Создать программу шифровщик-дишифровщик. Вначале выбераем шифровку или дишифровку выполняем. Для шифровки вводим русский текст, преобразуем все буквы в заглавные, а затем прибавляем каждому коду буквы сдвиг (сдвиг может быть и отрицательным, мы сами его вводим). А на дишифровщике точно на оборот... Заранее благодарю!!!
Ну вот вроде шифровка так выглядит, если я правильно понял ( или с русскими по другому? ), для любых сиволов. Это только шифровка обратный процесс аналогичен:
uses crt;
var s : string;
ch : char;
n,i : integer;
newstring : string;
begin
Clrscr;
writeln ('Vvedite stroku');
readln (s);
newstring:=s;
writeln ('Shifrujem: Y/N');
readln (ch);
if (Ch='y') or (Ch='y') then
begin
writeln ('Vvedite velichinu smeshenija? ');
readln (n);
for i:=1 to Length(S) do
begin
newstring[i]:=Upcase(chr(ord(s[i])+n));
end;
end else exit;
writeln ('Novaja stroka: ',newstring);
readkey;
end.
! | Если тема не будет переименована, она будет закрыта |
Границы смещения я и не ставил, если ты про это конечно, если человек понял идею для него это не проблема.
Да что ты ! А что-же у тебя в программе знначат вот эти строки ?
writeln ('Vvedite velichinu smeshenija? ');
readln (n);
//....
newstring[i]:=Upcase(chr(ord(s[i])+n))
{$X+}
function UpNCase(ch: char): char;
begin
case ch of
'А'..'п': begin UpNCase:=chr(ord('А')+ord(ch)-ord('а')); end;
'р'..'я': begin UpNCase:=chr(ord('Р')+ord(ch)-ord('р')) end;
end;
end;
http://forum.pascal.net.ru/index.php?s=&showtopic=3913&view=findpost&p=34167 (метод Цезаря)
Ребят, век не забудем... Я пока не проверял, но выгледит красиво. Надеюсь машине тоже понравится... А переименовать почему-то не могу тему. Мож потому что я с мини оперы сдеся...
Мне кажется просто Цезарь это не совсем то что нужно, я думаю должно быть что-то вроде этого:
const
s_alpha = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
b_alpha = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
function Lower(s: String): String;
var
i: Integer;
begin
for i := 1 to Length(s) do
s[i] := s_alpha[ Pos(s[i], b_alpha) ];
Lower := s;
end;
function Crypt(const s: String; shift: Integer): String;
var
newPos, i, delta: Integer;
r: String;
begin
shift := shift - 33 * (shift div 33);
if shift < 0 then shift := 33 + shift;
r := '';
for i := 1 to Length(s) do begin
newPos := Pos(s[i], s_alpha) + shift;
if newPos > 33 then dec(newPos, 33);
r := r + b_alpha[newPos];
end;
Crypt := r;
end;
function DeCrypt(s: String; shift: Integer): String;
begin
Decrypt := Lower(Crypt(Lower(s), -shift));
end;
var
s: String;
begin
s := 'абвя';
writeln(s);
s := Crypt(s, -34);
writeln(s);
s := DeCrypt(s, -34);
writeln(s);
end.