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

الترتيب تصاعديا او تنازلييا في مصفوفة ارقام

مغلق
بدأه المبدعه الصغيره في 20 مايو 2005 · 9 رد · 4,451 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل من احد الاعضاء ان يفهمني فكرة طريقة هذه الطريقة في الترتيب وهي تدعى طريقة الـInsertion Sort

Private Sub Command1_Click ()



Cls



Dim j, k, n, i As Integer

Dim a(1 To 8) As Integer



n = InputBox("إدخل عدد الارقام ")



For k = 1 To n

a(k) = InputBox("إدخل القيمة ")

Next k



If n >= 2 Then

For i = 2 To n

Flag = 1

j = i

Do While (j >= 2) And (flage = 1)

If a(j) < a(j - 1) Then

temp = a(j)

a(j) = a(j - 1)

a(j - 1) = temp

j = j - 1

Else

Flag = 0

End If

Loop

Next i



For k = 1 To n

Print a(k), k, m, x, t

Next k



End If

End Sub
#2

وين يا جاعه اهل الخبره

#3

الى المبدعة الصغيرة

وجدت ان الكود الذى كتبتيه غير منسق كما ان طريقته ملتوية نوعا ما ويوجد بعض المتغيرات ليس لها فائدة

ولقد فضلت ان اكتب الكود بطريقة أفضل وأسلوب أكثر منطقية و سهل للفهم

و اليك الكود

Private Sub Command1_Click()
Dim Numbers() As Integer
Dim Count As Integer
Dim Exchange As Integer

Count = Val(InputBox("أدخل عدد الارقام"))
ReDim Numbers(Count)

For i = 1 To Count
Numbers(i) = Val(InputBox("أدخل الرقم : " + Str(i)))
Next i

If Count < 2 Then Exit Sub

For i = 1 To Count
    For n = i To Count
        If Numbers(i) > Numbers(n) Then
            Exchange = Numbers(i)
            Numbers(i) = Numbers(n)
            Numbers(n) = Exchange
        End If
    Next n
Me.Print Numbers(i)
Next i

فكرة الكود الاساسية أنه يقارن بين أول رقم و جميع الأرقام التى تليه ويتم ااستبدال الرقم الأول

بأى رقم أقل منه ان وجد و بالتالى فى أول لفة لابد ان يحتوى أول عنصر فى المصفوفة على أصغر رقم

ثم يتم مقارنة الرقم الثانى بجميع الأرقم التى تليه وهكذا حتى يحتوى العنصر الثانى فى المصفوفة

على أصغر رقم بعد الرقم الأول ...ثم يتم مقارنة العنصر الثالث بالعناصر التى تليه و هكذا .....

أرجو ان اكون اوضحت الفكرة

واذا كنت مصرة على ان اشرح الكود الذى كتبتيه فأرجو اعلامى

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#4

الاخ / VB6-Rocket

انا لم اطلب منك التعديل على الكـــود ولكني اطلب شرح هذه الفكره لان هذه الفكرة مختلفة تماما عن ما قمت بشرحه .

ومشكــــور على مجهودك ومساعدتك لي.

#5

الصراحه لو اعرف والله مابخلت عليك

#6

مشكوره اختي / بنت البرمجه .

#7

على مــا اعتقد ان هذه الطريقه الذي شرحها الاخ /VB6-Rocket تدعى بــ ال سيلكشن

av-48120.jpg
#8

الاخت / المبدعة الصغيرة .

اليك هذا الرابط ستجدي فيه كل ما تريديه .

/index.ph...ndpost&p=333184

اقتباس

آسف الدخول متقطع هذه القتره

اقتباس

[يمين]

.[/يمين]

A7med_prof-4-2007.jpg

اخر مواضيعي 2007

االمثال مطبق على موقع بورصه سعودي

.

.

مواضيع مهمه ومطلوبه بكثره VB6

.

بــرامج ومشــاريع عربيه كامــله {HnHn} والمزيد في قسم برامج الاعضاء || ربط قواعد بيانات اكسس مع الفيجوال بيسك, مادة دراسية كاملة {بنت اليمن}|| المرجع الشامل لجمل SQL ا {GENIUS-IT} || كيفية التعامل مع مكتبة الـ DAO, في الوصول إلى قاعدة بيانات {رمضان} || مثال ريط Visaul Basic 6.0 مع SQL SERVER ا || العمليات التي تجرى على قاعدة البيانات, مثال كامل {بنت اليمن} || تصدير البيانات من الاكسل الي الاكسس بالفيجوال بيسك {HnHn} || البحث في قاعدة البيانات {MANSUR} || قواعد البيانات العلائقية وتقنيات الوصول إليها {عبد الله فتحي} || كيفية أظهار بيانات جدولين بواسطة التاريخ ,,,,,,,

.

أخي ربما سؤالك اجابته في أحدى هذه المواضيع فإن لم تجد قم بالبحث وان لم تجد اطرح سؤالك مع وضع عنوان مناسب بحيث ان يكون هذا العنوان دال على محتوى الموضوع فغير ذلك من أكبر الكبائر في المنتدى وسيؤدي الى غلق او حذف موضوعك .

.

</
#9

السلام عليكم

اولا اسف على التأخير

الكود الخاص بكى يقوم برتيب العناصر بأقل خطوات ممكنة ويعتمد أيضا على الترتيب الأولى لعناصر المصفوفة وكلما كانت المصفوفة شبه مرتبة كلما قلت خطوات ترتيبها ... على عكس الكود الخاص بى الذى يرتب خلال عدد ثابت من الخطوات و لا يعتمد على الترتيب الاولى لعناصر المصفوفة ......

اليك شرح نظرى للكود الخاص بكى :

-----------------------------------

يقوم بمقارنة كل عنصر بالعنصر الذى قبله هل هو أصغر منه أم لا حتى يصل الى العنصر رقم واحد ولكن خلال هذه المقارنة اذا وجد عنصر أقل منه فإنه يخرج من الدوارة while عن طريق تغير قيمة العلم FLAG حتى يقف كل عنصر عند العنصر الأصغر منه مباشرة....

لنفترض ان المصفوفة تحوى أربع عناصر فإن ما يحدث كالتالى

رقم اللفة : العنصرمحل المقارنة ---------> باقى العناصر

--------------------------------------------------------

اللفة الأولى : ع(2) ----يقارن مع----> ع(1)

اللفة الثانية : ع(3) ----يقارن مع----> ع(2) ثم ع(1)

اللفة الثالثة : ع(4) ----يقارن مع----> ع(3) ثم ع(2) ثم ع(1)

ويتم الخروج من أى لفة اذا كان العنصر محل المقارنة أكبر من أى عنصر من العناصر التى يقارن معها وبالتالى يتم اختصار عدد لفات الدوارة اذا امكن ...

وعلى ضوء هذا المنطق و التحليل فإنه لكتابة الكود لابد من عمل دوارتين

الدوارة الأولى :

تحمل الارقام المقارنة بالترتيب 2 و 3 و 4

يعنى For i = 2 to N حيث N هى عدد عناصر المصفوفة

الدوارة ثانية :

تحمل باقى العناصر التى سيتم مقارنتها مع العنصر محل المقارنة من الدوارة الاولى

تتغيرعدد لفات هذه الدوارة حسب قيمة الدوارة الاولى الحالية

For j = i-1 to 1 Step -1 (ملحوظة : فى الكود الذى ادرجتيه تم عملها عن طريق while)

و يتم الخروج من هذه الدوارة إذا كانت قيمة العنصر محل المقارنة من الدوارة الأولى أكبر من أى من العناصر التى يقارن بها فى الدوارة الثانية أم اذا حدث العكس فإنه يتم التبديل بين العنصرين

ملحوظة : لقد تم استخدام المتغير flag للخروج من الدوارة الثانية بينما اذا استخدمتى For يمكنك استخدام الأمر Exit For للخروج من الدوارة مباشرة

لقد شرحت لكى المنطق كاملا وانت يمكنك الان ان فهمتيه ان تكتبى الكود بنفسك و سيتضح لك انه نفس الكود الذى ادرجتيه سواء استخدمتى ال While أو ال for فى الدوارة الثانية

أرجو ان اكون أوصلت المعلومة على الأقل فى الوقت المناسب

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

#10

مشكوراخي / A7med_prof

مشكوراخي / VB6-Rocket

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…