• 0
زوار

خوارزمية التباديل.. كيف؟

سؤال

شدني هذا المنتدى وأشكر القائمين عليه، فهذا يخدم جميع المصممين.

أرجو الإجابة على هذا السؤال؟

كيف أطبق فكرة التباديل على مصفوفة معينة؟؟

بمعنى آخر : تخيل مصفوفة مكونة من أربع خانات تحوي الأرقام 1 2 3 4

نريد كيفية قلب أماكن الأرقام بطريقة تبادلية حتى يصبح الناتج:

4321

4312

4213

4231

4132

4123

3124

3142

3241

3214

3412

3421

2431

2413

2314

2341

2143

2134

1234

1243

1342

1324

1423

1432

أعتقد أن السؤال واضح، فكيف أنفذ هذا ببرنامج معين؟؟ وشكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

تكرم ;)

هي كتبتلك كود مشان هالمسألة.

بس بلغة باسكال!

Program Salem;

Const Size=4;

Var T1:Array[1..Size] Of Char;
T2:Array[1..Size] Of Integer;
n:Integer;

Procedure View;
Var j:Integer;
Begin
For j:=1 to Size Do Write(T1[T2[j]]);
Writeln;
End;

Procedure Tree(Step:Integer);
Var i:Integer;
Begin
For i:=1 to Size Do
Begin
If T2[i]=0 then
Begin
T2[i]:=Step;
If Step = Size then View
Else Tree(Step+1);;
T2[i]:=0;
End;

End;
End;

Begin {The Program}
for n:=1 to size do read(t1[n]);
for n:=1 to size do T2[n]:=0;
Tree(1);
End. {The Program}

إذا كان في مشكلة بالكود ممكن أشرحه قريباً، أو نتكتبه بغير لغة لغير الباسكاليين;) :D

الفكرة العامة

مصفوفتين الأولى تمثل العناصر المراد ترتيبها (أخذ تباديلها) والثانية من عناصر Integer يخزن فيها القيم التي وصل إليها الإجراء التعاودي (نربطها مع الأولى عند الإظهار على الشاشة بالإجراء View).

تصفر قيم المصفوفة الثانية في بداية البرنامج، ويستدعى الإجراء Tree المبني بشكل تعاودي ويأخذ وسطاء تدل على رقم ترتيب الخطوة. وينتهي الاجراء التعاودي عند وصول الخطوة Step للقيمة Size وهي عدد العناصر. (تسجل الخطوات في المصفوفة الثانية وتربط مع أي عناصر في المصفوفة الأولى.

كمثال: برنامجنا هنا يطلب منك إدخال محارف لتخزن في المصفوفة والتي سيتم إظهار تباديلها على الشاشة.

البرنامج كتبته بسرعة :( وإذا في حدى عنده حلول أسرع يا ريت يفيدنا بالموضوع!;) ;)

تم تعديل بواسطه Xacker
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وهذا هو الكود فى فيجول بيسك

Const Size = 4

Dim T1(1 To 4) As Byte
Dim T2(1 To 4) As Byte
Dim N As Integer
Sub View()
Dim j As Integer
For j = 1 To Size
Text1.Text = Text1.Text & T1(T2(j))
Next j
Text1.Text = Text1.Text & vbCrLf
End Sub

Private Sub Command1_Click()

For N = 1 To Size
T1(N) = InputBox("أدخل العنصر رقم " & N)
Next N
For N = 1 To Size
T2(N) = 0
Next N
Tree (1)

End Sub
Sub Tree(Step As Integer)
Dim I As Integer
For I = 1 To Size
If T2(I) = 0 Then
T2(I) = Step
If Step = Size Then
View
Else
Tree (Step + 1)
End If
T2(I) = 0
End If
Next I
End Sub

Private Sub Form_Load()
Text1.Text = ""

End Sub

طبعا بعد وضع زر أمر وخانة نص

تم تعديل بواسطه Xacker
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً جزيلاً يا سالم و رمضان. قد أفدتموني كثيراً. وساعدتموني على إكمال برنامج لدي.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .