unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Edit2: TEdit;
Button2: TButton;
Memo5: TMemo;
Memo6: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
lev,rev,i,j,p,o:integer;
key:array[1..6] of integer;
ff,ff1,ff2,ff3,ff4:file of integer;
implementation
{$R *.dfm}
function F(l,k,p:integer):integer;
begin
F:=(l+k) xor p;
end;
function F1(l,k,p:integer):integer;
begin
F1:=(l-k) xor p;
end;
function F2(l,k,p:integer):integer;
begin
F2:=(l*k) xor p;
end;
procedure TForm1.Button1Click(Sender: TObject);
var j,i:integer;
begin
For j:=1 to 32 do
begin
assignfile(ff,'input.txt');
reset(ff);
read(ff, lev);
read(ff,rev);
closefile(ff);
Memo4.Lines.LoadFromFile('input.txt');
Memo1.Text:=IntToStr( lev)+' '+IntToStr(rev);
If Edit2.Text='' then begin
for i:=1 to 4 do begin
key[i]:=random(100000000);
Edit2.Text:=IntToStr(key[i]);
end;
end
else
begin
for i:=1 to 2 do begin
key[i]:=StrToInt(Edit2.Text) ;
end ; end;
end ;
for i:=1 to 16 do
begin
p:=rev ;
rev:=lev;
if RadioButton1.Checked then lev:=F( lev,key[i],p);
if RadioButton2.Checked then lev:=F1( lev,key[i],p);
if RadioButton3.Checked then lev:=F2( lev,key[i],p);
end ;
p:=lev;
lev:=rev;
rev:=p;
Memo3.Text:=IntToStr( lev)+' '+IntToStr(rev);
assignfile(ff2,'ouput1.txt');
rewrite(ff2);
write(ff2,lev,rev);
closefile(ff2);
Memo2.Lines.LoadFromFile('ouput1.txt');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Edit2.Text='' then begin MessageBox(Self.Handle, PChar('нужен ключ .')
, PChar('не правельный ключ '), MB_OKCANCEL ); Button1.Click; end;
For j:=1 to 32 do
begin
assignfile(ff2,'ouput1.txt');
reset(ff2);
read(ff2, lev);
read(ff2,rev);
closefile(ff2);
Memo5.Lines.LoadFromFile('ouput1.txt'); end;
for i:=16 downto 1 do
begin
p:=rev ;
rev:=lev;
if RadioButton1.Checked then lev:=F( lev,key[i],p);
if RadioButton2.Checked then lev:=F1( lev,key[i],p);
if RadioButton3.Checked then lev:=F2( lev,key[i],p);
end ;
p:=lev;
lev:=rev ;
rev:=p;
assignfile(ff3,'ouput2.txt');
rewrite(ff3);
write(ff3,lev,rev);
closefile(ff3);
Memo6.Lines.LoadFromFile('ouput2.txt');
end;
end.