تم النشر منذ 9 Apr 2013 انا مبتدئة في فيجوال بيسك دوت نتلدي كود لترتيب الارقام يعمل على فيجوال بيسك 6ولكن لا يعمل على دوت نتبرجاء تعديل الكود ليعمل على فيجوال بيسك دوت نت 2010 وشكرا Private Sub Command1_Click()ClsDim X(1 To 20) As SingleDim N, J, k, Temp, I As SingleN = InputBox("ادخل عدد القيم")For J = 1 To NX(J) = InputBox("ادخل القيم")Next JFor J = 1 To N - 1Temp = X(J)For I = J + 1 To NIf X(I) < Temp Thenk = (I)Temp = X(J)X(J) = X(k)X(k) = TempTemp = X(J)End IfNext INext JFor I = 1 To NPrint , X(I);Next IEnd Sub 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 9 Apr 2013 تفضلي Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim X(20) As Single Dim N, J, k, Temp, I As Single N = InputBox("ادخل عدد القيم") For J = 1 To N X(J) = InputBox("ادخل القيم") Next J For J = 1 To N - 1 Temp = X(J) For I = J + 1 To N If X(I) < Temp Then k = (I) Temp = X(J) X(J) = X(k) X(k) = Temp Temp = X(J) End If Next I Next J For I = 1 To N MsgBox(X(I)) Next I End Sub وهذا المثال التطبيقي:WindowsApplication1.rar 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 10 Apr 2013 متشكرة جدا استاذ فؤاد جربته وفعلا اشتغلبعد اذنك ممكن تشرحلي الكود لاني مش فاهمة اوي وممكن تقولي لو عايزاه تصاعدي يكون ازاي وتقولي رايك في الكود 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 10 Apr 2013 بكل سرور بالنسبة للتغييرات فكل ما فعلته هو تغيير السطرين التاليين: Dim X(1 To 20) As SinglePrint , X(I);كما يلي: Dim X(20) As Single MsgBox(X(I)) أما بالنسبة لشرح البرنامج: فهو كما يلي:بالبداية تعريف مصفوفة مؤلفة من عشرين عنصر من نوع single (رقم حقيقي), وتعريف خمس متغيرات لتخزين أرقام سنستغلها لاحقاً في البرنامج: Dim X(20) As Single Dim N, J, k, Temp, I As Singleنشحن المتغير N برقم يدخله المستخدم حيث أن الدالة inputBox تعرض مربع حوار يحوي مربع نص ومن ثم يعيد قيمة الرقم الذي أدخله المستخدم, وهذا الرقم N يعبر عن عدد الأرقام المراد ترتيبها: N = InputBox("ادخل عدد القيم")بعدها يتم تنفيذ حلقة تكرارية بعدد الأرقام المراد ترتيبها وبكل خطوة يتم عرض نفس مربع الحوار لإدخال رقم ومن ثم تخزينه في المصفوفة X For J = 1 To N X(J) = InputBox("ادخل القيم") Next Jثم تبدأ الحلقة التكرارية التي تقوم بالترتيب وملخص عملها هو ترتيب العناصر في المصفوفة بوضع أصغر العناصر في بداية المصفوفة ويليه ثاني أصغر العناصر وهكذا حتى ينتهي ترتيب كامل عناصر المصفوفة: For J = 1 To N - 1 Temp = X(J) For I = J + 1 To N If X(I) < Temp Then k = (I) Temp = X(J) X(J) = X(k) X(k) = Temp Temp = X(J) End If Next I Next Jوبالنهاية حلقة تكرارية تقوم بعرض عناصر المصفوفة بعد الترتيب: For I = 1 To N MsgBox(X(I)) Next I ولتغيير نوع الترتيب يكفي تغغير عبارة الشرطللترتيب التصاعدي: If X(I) < Temp Then للترتيب التنازلي:If X(I) > Temp Then وهذه الخوارزمية تدعى خوارزمية الترتيب الفقاعيإنها خوارزمية جيدة وتعطي نتائج مقبولة بالنسبة لكمية الأرقام القليلة ولكن بالنسبة لكمية الأرقام الضخمة فيوجد العديد من الخوارزميات التي تعتبر أكثر فاعلية منها ولكنها أكثر تعقيداً 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 11 Apr 2013 متشكرة جدا على مساعدتك ومجهود رائعممكن تديني فكرة لو كمية الارقام ضخمة وليه بتكون اكثر تعقيداوهل في طريقة ان اخلي الكود يعرضلي الارقام بعد ترتيبها ورا بعض يعني مش كل رقم في msgbox قصدي كلهم في msgbox واحدة مرتبين 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 13 Apr 2013 بالنسبة لخوارزميات البحث الترتيب أنصحك بقراءة هذا الموضوع أما بالنسبة لطباعة جميع الأرقام برسالة واحدة فيمكنك استخدام الحلقة التكرارية التالية عوضاً عن السابقة: Dim msgStr As String = "" For I = 1 To N msgStr = msgStr & X(I) Next I MsgBox(msgStr) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 15 Apr 2013 شكرا جدا مش عارفة اقولك ايهانا جربت الكود التاني فعلا اشتغل بس لما جيت اعمله تنازلي ما اشتغلش عملته كده Dim msgStr As String = ""Dim X(20) As SingleDim N As SingleN = InputBox("ادخل عدد القيم")For I = N To 1X(I) = InputBox("ادخل القيم")msgStr = msgStr & X(I)Next IMsgBox(msgStr) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 15 Apr 2013 شكرا جدا مش عارفة اقولك ايهانا جربت الكود التاني فعلا اشتغل بس لما جيت اعمله تنازلي ما اشتغلش عملته كده Dim msgStr As String = ""Dim X(20) As SingleDim N As SingleN = InputBox("ادخل عدد القيم")For I = N To 1X(I) = InputBox("ادخل القيم")msgStr = msgStr & X(I)Next IMsgBox(msgStr) إن المشكلة في الحلقة التكرارية التي اخترتيها: فهي من N إلى 1 وهذا خاطئ لأنها لن تعمل أي شيء فهي ستبدأ من القيمة N وتنتهي عندما تصل إلى قيمة أكبر من 1 (وهي بالأصل أكبر من القيمة 1)والحل الصحيح أن تبدأ الحلقة التكرارية من 1 وتنتهي عند N وكمت قلت من قبل أنه من أجل عملية الفرز التنازلي يجب فقط تغيير الشرط ضمن الحلقة التكرارية إما إشارة < أو > حسب نوع الترتيب If X(I) > Temp Then 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 16 Apr 2013 كان قصدي اني اعمل تنازلي في الطريقة التانية للكود ان يطلع الترتيب كله في مسج بوكس واحدةشكرا لوقتك في الرد عليا - ربنا يجازيك خير 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 24 Apr 2013 الاخ فؤاد شكرا لمجهودكهل يمكن عمل الترتيب التنازلي ويظهر كله في رسالة واحدة 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 24 Apr 2013 يبدو من ردك أنك حاولت كثيراً وفشلت وبالتالي هذا هو البرنامج:للترتيب التصاعدي: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim X(20) As Single Dim N, J, k, Temp, I As Single N = InputBox("ادخل عدد القيم") For J = 1 To N X(J) = InputBox("ادخل القيم") Next J For J = 1 To N - 1 Temp = X(J) For I = J + 1 To N If X(I) < Temp Then k = (I) Temp = X(J) X(J) = X(k) X(k) = Temp Temp = X(J) End If Next I Next JDim msgStr As String = "" For I = 1 To N msgStr = msgStr & X(I) Next I MsgBox(msgStr) وللترتيب التنازلي: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim X(20) As Single Dim N, J, k, Temp, I As Single N = InputBox("ادخل عدد القيم") For J = 1 To N X(J) = InputBox("ادخل القيم") Next J For J = 1 To N - 1 Temp = X(J) For I = J + 1 To N If X(I) > Temp Then k = (I) Temp = X(J) X(J) = X(k) X(k) = Temp Temp = X(J) End If Next I Next JDim msgStr As String = "" For I = 1 To N msgStr = msgStr & X(I) Next I MsgBox(msgStr) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 25 Apr 2013 شكرا ليك جدا يا اخ فؤاد على الرد والافادةكان سؤالي اني طبقت ملحوظاتك على الكود علشان تظهر الارقام في رسالة واحدة وعملت الترتيب التصاعدي بالشكل التالي : Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.ClickDim msgStr As String = ""Dim X(20) As SingleDim N As SingleN = InputBox("ادخل عدد القيم")For I = 1 To NX(I) = InputBox("ادخل القيم")msgStr = msgStr & X(I)Next IMsgBox(msgStr)End Sub ولكني لم استطع بنفس الطريقة عمل ترتيب تنازلي لتظهر لي الارقام في رسالة واحدة فكيف يمكن التغيير في الكود السابق حتى يتم ترتيب الارقام تنازليا وتظهر في رسالة واحدة 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 25 Apr 2013 يا اخ فؤاد اسفة لكثرة الاسئلةبس ياريت تفيدني هل يمكن عمل الكود السابق للترتيب التنازلي ام لا للاسف حاولت وماعرفتش 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 28 Apr 2013 أعتذر عن الرد حتى الآن وذلك بسبب انقطاع الانترنت, وآمل أن لا يظن أحد أنني قد مللت أو سئمت من الأسئلة, ويسرني دائماً تقديم المساعدة متى طلبت مني واستطعت ذلك. على كل حال بالنسبة لسؤالك فقد حاولت المساعدة بمشاركتي رقم #11 وكتبت البرنامج بالكامل حيث يتم طباعة الأرقام برسالة واحدة بالترتيب التصاعدي والتنازلي. أما بالنسبة لتصحيح برنامجك:Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.ClickDim msgStr As String = ""Dim X(20) As SingleDim N As SingleN = InputBox("ادخل عدد القيم")For I = 1 To NX(I) = InputBox("ادخل القيم")msgStr = msgStr & X(I)Next IMsgBox(msgStr)End Subفهذا البرنامج لا يقوم بأي ترتيب (لا تصاعدي ولا تنازلي) وإنما فقط يطلب من المستخدم إدخال عدة أرقام ومن ثم طباعتها برسالة.يمكنك معرفة قطع الكود الناقصة بمقارنة هذا البرنامج مع البرنامج الموجود بالمشاركة رقم #11 بالتوفيق 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 28 Apr 2013 جربت الكود في المشاركة 11 التصاعدي اشتغلبس التنازلي مش شغال مرفق البرنامج برجاء افادتي ما الخطاWindowsApplication12.rar 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 28 Apr 2013 لقد اطلعت على البرنامج, ويبدو البرنامج صحيحاً إلا أنه يوجد خطأ بسيط: أعتقد أنك كنت تختارين Yes وهذا يعني أن visualStudio سيشغل أحدث نسخة كانت تعمل من البرنامج, ولن يقوم بترجمة التغييرات الجديد. الخطأ هو أنه قبل تعليمة End Class يجب أن تكون تعليمة End Sub فلا يمكن انهاء البرنامج قبل انهاء الدالة. 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ
انا مبتدئة في فيجوال بيسك دوت نت
لدي كود لترتيب الارقام يعمل على فيجوال بيسك 6
ولكن لا يعمل على دوت نت
برجاء تعديل الكود ليعمل على فيجوال بيسك دوت نت 2010
وشكرا
Private Sub Command1_Click()
Cls
Dim X(1 To 20) As Single
Dim N, J, k, Temp, I As Single
N = InputBox("ادخل عدد القيم")
For J = 1 To N
X(J) = InputBox("ادخل القيم")
Next J
For J = 1 To N - 1
Temp = X(J)
For I = J + 1 To N
If X(I) < Temp Then
k = (I)
Temp = X(J)
X(J) = X(k)
X(k) = Temp
Temp = X(J)
End If
Next I
Next J
For I = 1 To N
Print , X(I);
Next I
End Sub
شارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه