📄 dna.~pas
字号:
unit DNA;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Edit3: TEdit;
Label3: TLabel;
Edit4: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,b:integer;
i,j:integer;
str1:string;
str2:string;
DNArray1:array[1..20] of char;
DNArray2:array[1..20] of char;
SimArray:array[1..20] of array[1..20] of integer;
DirArray:array[1..20] of array[1..20] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button3Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=1 to length(str2) do
begin
SimArray[i][1]:=0;
DirArray[i][1]:=0;
end;
for j:=1 to length(str1) do
begin
SimArray[1][j]:=0;
DirArray[1][j]:=0;
end;
for i:=2 to length(str2) do
for j:=2 to length(str1) do
if DNArray1[j]=DNArray2[i] then
begin
SimArray[i][j]:=SimArray[i-1][j-1]+1;
DirArray[i][j]:=2;
end
else if SimArray[i-1][j]>=SimArray[i][j-1] then
begin
SimArray[i][j]:=SimArray[i-1][j];
DirArray[i][j]:=1;
end
else
begin
SimArray[i][j]:=SimArray[i][j-1];
DirArray[i][j]:=3;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
r,s:integer;
begin
r:=length(str2);
s:=length(str1);
while DirArray[r][s]<>0 do
if DirArray[r][s]=2 then
begin
edit3.Text:=edit3.Text+DNArray1[s];
edit4.Text:=edit4.Text+DNArray2[s];
s:=s-1;
r:=r-1;
end
else if DirArray[r][s]=1 then
begin
edit3.Text:=edit3.Text+'-';
edit4.Text:=edit4.Text+DNArray2[r];
r:=r-1;
end
else if DirArray[r][s]=3 then
begin
edit3.Text:=edit3.Text+DNArray1[s];
edit3.Text:=edit3.Text+'-';
s:=s-1;
end;
{ShowMessage('联配结果序列是'+str3);}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
a:=SimArray[length(str1)][length(str2)];
b:=2*length(str2)-2*a-2;
ShowMessage('相似度为'+InttoStr(a)+',编辑距离为'+InttoStr(b));
end;
procedure TForm1.Button5Click(Sender: TObject);
var
m:integer;
begin
str1:=edit1.Text;
for m:=0 to length(str1) do
begin
DNArray1[m]:= str1[m];
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
m:integer;
begin
str2:=edit2.Text;
for m:=0 to length(str2) do
begin
DNArray2[m]:= str2[m];
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -