![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Пишу шифровальщик по цезарю. В общем, почти все работает, но дешифрует какими-то неверными ниоткуда взявшимися символами О_о
исходный: абв обработанный: я0Ґ исходный: АБВГДЕ обработанный: Эя остальные комбинации переводит как надо, проблема в начале алфавита. Код:
//Алфавит const letter:array[0..65] of char = ('А','а','Б','б','В','в','Г','г','Д','д','Е','е','Ё','ё','Ж','ж','З','з','И','и','Й','й','К','к','Л','л','М','м','Н','н','О','о','П','п','Р','р','С','с','Т','т','У','у','Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ','Ы','ы','Ь','ь','Э','э','Ю','ю','Я','я'); var Form1: TForm1; a:array[0..65] of char; s, s2:string; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i, j: integer; begin For i:=0 to 65 do begin a[i]:= letter[(i+1) mod 66]; end; // зашифровать s := Memo1.Lines.Text; for i := 1 to length(s) do for j := 0 to 65 do if s[i] = a[j] then s2 := s2+a[(j+6) mod 66]; Memo2.Lines.Text := s2; s2 := ''; end; procedure TForm1.Button2Click(Sender: TObject); var i, j: integer; begin For i:=0 to 65 do begin a[i]:= letter[(i+1) mod 66]; end; // дешифровать s := Memo1.Lines.Text; for i := 1 to length(s) do for j := 0 to 65 do if s[i] = a[j] then s2 := s2+a[(j-6) mod 66]; Memo2.Lines.Text := s2; s2 := ''; end; Последний раз редактировалось aasaiyo, 24.10.2011 в 00:07. |
#2
|
|||
|
|||
![]() ...доп вопрос решен...остался в топике...откуда он вообще эти символы берет?? 0Ґ их ведь нет в заданном алфавите...
Последний раз редактировалось aasaiyo, 24.10.2011 в 00:08. |
#3
|
||||
|
||||
![]() Есть несколько способов реализации, но для учебных целей пойдет и такая:
PHP код:
и обратое преобразование: PHP код:
Последний раз редактировалось Konrad, 24.10.2011 в 19:35. |