delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف أوظف الإحتمالات كلها؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
belnono كتب :شكرا أخي Confused.fateh
على الكود الأخير، لكنني لم أفهم منه شيئا

بالنسبة للكود يعتمد على Recursive Function اي ان الدالة تقوم باعادة استدعاء نفسها عند
النهاية اما بالنسبة الى اين تنسخ يجب ان تراجع دروسك Big GrinBig Grin
السلام عليكم.....هذا كود انشاته ..مع العلم ان تشكيل اعداد من 4ارقام مختلفة ذون تكرار هو ترتيبة من 4 الى 4 والتي هي بعد الختزال 4*3*2*1=24....اي 24 حالة...للعلم الكود يقبل اربعة ارقام فقط مختلفة ....وشكرا
PHP كود :
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; 

السلام عليكم.....هذا كود تكوين اعداد مختلفة من 5 أرقام مختلفة ..مع العلم ان تشكيل اعداد من 5ارقام مختلفة ذون تكرار هو ترتيبة من 5 الى 5 والتي هي بعد الختزال 5*4*3*2*1=120....اي 120 حالة...للعلم الكود يقبل خمسة ارقام مختلفة ....وشكرا


PHP كود :
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; 
بنفس الطريقة تستطيع التعديل في كل مرة عند اضافة رقم ...فمثلا عندما نريد تشكيل اعداد من 6أرقام مختلفة فالناتج يكون 720 حالة
الصفحات : 1 2