الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه زائر في 19 مارس 2002 · 3 رد · 2,184 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

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

بمعنى آخر : تخيل مصفوفة مكونة من أربع خانات تحوي الأرقام 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

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

#2

تكرم ;)

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

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

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=0 then
	Begin
	  T2:=Step;
	  If Step = Size then View
	  Else Tree(Step+1);;
	  T2:=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 في 26 أكتوبر 2008 في 15:59

#3

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

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 في 26 أكتوبر 2008 في 16:00

1
#4

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

هذا الموضوع مغلق.

مواضيع مشابهة