Полибианский квадрат — Delphi(Делфи)

Шифр изобрел греческий писатель и историк Полибий. Прямоугольная таблица заполняется буквами алфавита в случайном порядке. Каждая буква открытого сообщения заменяется буквой, расположенной ниже в том же столбце. Если буква находится на последней строке таблицы, то для ее шифрования берут самую верхнюю букву столбца. 

УКВЪМЮЬД
ИБТЛЭГЩН
СФЗЫПЦЕЯ
А РХЖШОЧ
Внешний вид формы приложения

Delphi 7.0

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Button1: TButton;
    Edit4: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var i,k,y:integer;
begin



end;

procedure TForm1.Button1Click(Sender: TObject);
var z,i,j:integer;
a:string;
begin
a:=edit1.Text;
for z:=1 to length(a) do begin
for i:=0 to 7 do
for j:=0 to 3 do
  begin
   if stringgrid1.cells[i,j]=a[z] then
   begin
   if j<>3 then edit4.Text:=edit4.Text+stringgrid1.cells[i,j+1] else edit4.Text:=edit4.Text+stringgrid1.cells[i,0];
   end;
  end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var i,i1,j1,j2,j3,j4:integer;
r1,r2,r3,r4:string[8];
begin
randomize();
i1:=7;
r1:='АБВГДЕЖЗ';
r2:='ИКЛМНОПР';
r3:='СТУФХЦЧШ';
r4:='ЩЪЫЬЭЮЯ ';
for i:=0 to 7
do
begin
j1:=random(i1);StringGrid1.Cells[i,0]:=r1[j1+1];delete(r1,j1+1,1);
j2:=random(i1);StringGrid1.Cells[i,1]:=r2[j2+1];delete(r2,j2+1,1);
j3:=random(i1);StringGrid1.Cells[i,2]:=r3[j3+1];delete(r3,j3+1,1);
j4:=random(i1);StringGrid1.Cells[i,3]:=r4[j4+1];delete(r4,j4+1,1);
i1:=i1-1;
end;
end;
end.

Leave a Comment

56 − 46 =