delphi4arab منتديات دلفي للعرب
كيف أوظف الإحتمالات كلها؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف أوظف الإحتمالات كلها؟ (/showthread.php?tid=4485)

الصفحات: 1 2


كيف أوظف الإحتمالات كلها؟ - S.FATEH - 28-08-2012

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

بالنسبة للكود يعتمد على Recursive Function اي ان الدالة تقوم باعادة استدعاء نفسها عند
النهاية اما بالنسبة الى اين تنسخ يجب ان تراجع دروسك Big GrinBig Grin


كيف أوظف الإحتمالات كلها؟ - hakimrahal - 14-09-2012

السلام عليكم.....هذا كود انشاته ..مع العلم ان تشكيل اعداد من 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 حالة