Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2014, 23:25   #1
Ekvental
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 26
По умолчанию Программа на Delphi. "Квадрат Полибия"

У меня, в общем, есть сама программа, но она не функционирует в принципе - я сам не программист и плохо разбираюсь в кодинге.
Принцип прост: Квадрат полибия - это метод криптографии, где используются таблицы символов для шифрования текста, состоящего из этих символов. Данная программа вроде "кушает" латинские буквы (шифрует тексты из них и расшифровывает), но, когда речь заходит о выполнении участков кода, где её принуждают "кушать" русские буквы, символы и знаки препинания, то модуль отказывается запускаться.

Привожу кода данного модуля:

Код:

unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
Tfirst = '1' .. '8';
Tsecond = '1' .. '8';
const
TPolibius: array[Tfirst, Tsecond] of char = (
('_', 'А', 'Б', 'В', 'Г','Д', 'Е', 'Ё'),
('Ж', 'З', 'И','Й','К', 'Л','М', 'Н'),
('О','П', 'Р', 'С', 'Т', 'У','Ф', 'Х'),
('Ц','Ч', 'Ш', 'Щ','Ъ', 'Ы','Ь','Э'),
('Ю', 'Я', '0', '1','2', '3', '4','5'),
('6', '7', '8', '9', '(',')', '[', ']'),
('{', '}', '.', ',', ':',';', '?', '!'),
('-', '"', '+', '=', '№','%', '*', '/')
);

function PolibiusEncipher(toCode: string): string;
var
i: integer;
ix: Tfirst; jx: Tsecond;
s: string;
begin
s := '';
for i := 1 to length(toCode) do begin

for ix := Low(Tfirst) to High(Tfirst) do
for jx := Low(Tsecond) to High(Tsecond) do
if TPolibius[ix, jx] = toCode[ i ] then begin
s := s + ix + jx; break;
end;

end;
PolibiusEncipher := s
end;

function PolibiusDecipher(toDecode: string): string;
var
i: integer;
s: string;
begin
s := '';
i := 1;
while i <= length(toDecode) do begin
s := s + TPolibius[toDecode[ i ], toDecode[succ(i)]];
inc(i, 2);
end;
PolibiusDecipher := s
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  s := PolibiusEncipher('POLIBIUS');
//  writeln(s);
  Memo1.lines.add(s);
  Memo1.lines.add('s = '+ PolibiusDecipher(s));
end;

end.

Последний раз редактировалось Ekvental; 17.11.2014 в 23:31.
Ekvental вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа по методу криптографии Квадрат Полибия Ekvental Помощь студентам 0 11.11.2014 12:36
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Программа в Delphi - сделать фрактал "Закрученный квадрат". Irk@ Помощь студентам 7 27.05.2013 13:37
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51