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

بالنسبة للكود يعتمد على Recursive Function اي ان الدالة تقوم باعادة استدعاء نفسها عند
النهاية اما بالنسبة الى اين تنسخ يجب ان تراجع دروسك Big GrinBig Grin
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#12
السلام عليكم.....هذا كود انشاته ..مع العلم ان تشكيل اعداد من 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 ) ضيف كريم