28-08-2012, 12:07 PM
belnono كتب :شكرا أخي.fateh
على الكود الأخير، لكنني لم أفهم منه شيئا
بالنسبة للكود يعتمد على Recursive Function اي ان الدالة تقوم باعادة استدعاء نفسها عند
النهاية اما بالنسبة الى اين تنسخ يجب ان تراجع دروسك


belnono كتب :شكرا أخي.fateh
على الكود الأخير، لكنني لم أفهم منه شيئا


procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,a:string;
s2:char;
i,j,k:integer;
begin
s:=edit1.Text;
memo1.Clear;
for i:=1 to 4 do
begin
s1:='';
for j:=1 to 4 do
begin
if j<>i then
s1:=s1+s[j];
end;
for j:=1 to 3 do
begin
for k:=1 to 2 do
begin
a:='';
a:=s1[1]+s1[2*k-k div 2]+s1[2+k mod 2];
memo1.Lines.Add(s[i]+a);
end;
if j<=2 then
begin
s2:=s1[1];
s1[1]:=s1[2*j-j div 2];
s1[2*j-j div 2]:=s2;
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1,a,s3:string;
s2:char;
i,j,k,l,m:integer;
begin
s:=edit1.Text;
memo1.Clear;
for l:=1 to 5 do
begin
s1:='';
for j:=1 to 5 do
begin
if j<>l then
s1:=s1+s[j];
end;
for m:=1 to 4 do
begin
s3:='';
for j:=1 to 4 do
begin
if j<>m then
s3:=s3+s1[j];
end;
for j:=1 to 3 do
begin
for k:=1 to 2 do
begin
a:='';
a:=s3[1]+s3[2*k-k div 2]+s3[2+k mod 2];
memo1.Lines.Add(s[l]+s1[m]+a);
end;
if j<=2 then
begin
s2:=s3[1];
s3[1]:=s3[2*j-j div 2];
s3[2*j-j div 2]:=s2;
end;
end;
end;
end;
label1.Caption:=inttostr(memo1.Lines.Count) ;
end;