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

كيف يعمل الكود الآتي

مغلق
بدأه math في 20 نوفمبر 2004 · 7 رد · 988 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الأخوة الأعزاء في ما يلي برنامج

يقومبفرز بعض الأعداد تصاعديا ... هل يوجد من يساعدني مشكورا في فهم آلية عمل الكود الذي يحوي المتغيرات a,b,t

public class SS{
    public static void main(String args[]){
        int nums[]={99,-10,100123,18,978,5623,463,-9,287,49};
       
       int a,b,t;
        for(a=1;a<10;a++)
            for(b=9;b>=a;b--){
                if(nums[b-1]>nums){
                    t=nums[b-1];
                    nums[b-1]=nums;
                    nums=t;
                }
           
            }
        for(int i=0;i<10;i++)
      
System .ot.println(nums);
    }
}

شاكرا تعاونكم..

تم تعديل هذه المشاركة بواسطة math في 20 نوفمبر 2004 في 16:06

#2

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

اين المشكلة

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#3

أخي رامي.. اشكرك للاهتمامك

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

وما هي الفائدة من الأسطر التالية تحديدا

t=num[b-1]

nums[b-1]=nums;

nums=t;

#4

هذا ما يسمى BubbleSort بحيث يقوم بمقارنة بين العنصر والعنصر الذي بعده فاذا كان

احدهما اكبر من الاخر فانه يقوم باستبدالهما في حالة الثاني مكان الاول عن طريق

      if(nums[b-1]>nums){
                   t=nums[b-1];
                   nums[b-1]=nums;
                   nums=t;
               }

واذا لا فيقوم بتركهما

ولتفهم بشكل افضل قم بتجربة Field صغير مثل الارقام 3 1 2 عن طريق اليد فستفهم افضل من الشرح

تم تعديل هذه المشاركة بواسطة مجدي محمود في 20 نوفمبر 2004 في 16:31

لست متواجد بشكل يومي

#5

شكرا ايها الأخوة..

قد اكون ازعجتكم...

سؤالي ..عندوضعنا

لـــ

 t=nums[b-1];

ثم

nums[b-1]=nums;

ماهي القيمة المخزنةفي t وفي nums[b-1] وفي nums ... عذرا فأنا مبتدئ في الجافا .. وفقكم الله وجزاكم خيرا

تم تعديل هذه المشاركة بواسطة math في 20 نوفمبر 2004 في 18:25

#6
اقتباس
بمقارنة بين العنصر والعنصر الذي بعده فاذا كان

احدهما اكبر من الاخر فانه يقوم باستبدالهما في حالة الثاني مكان الاول

هذا هو جواب سؤالك ويمكن تغيير البرنامج لفحص ذلك

public class SS{
   public static void main(String args[]){
      int nums[]={99,-10,100123,18,978,5623,463,-9,287,49};

       int a,b,t;
       for(a=1;a<10;a++)
           for(b=9;b>=a;b--){
               if(nums[b-1]>nums){
                   t=nums[b-1];
                   System.out.println("t = "+t);
                   nums[b-1]=nums;
                   System.out.println("nums[b-1]="+nums[b-1]);
                   nums=t;
                   System.out.println("nums = "+nums);
               }
          
           }
       for(int i=0;i<10;i++)
     
System .out.print(nums+" ");
   }
}

t = 287
nums[b-1]=49
nums = 287
t = 463
nums[b-1]=-9
nums = 463
t = 5623
nums[b-1]=-9
nums = 5623
t = 978
nums[b-1]=-9
nums = 978
t = 18
nums[b-1]=-9
nums = 18
t = 100123
nums[b-1]=-9
nums = 100123
t = 99
nums[b-1]=-10
nums = 99
t = 463
nums[b-1]=49
nums = 463
t = 5623
nums[b-1]=49
nums = 5623
t = 978
nums[b-1]=49
nums = 978
t = 100123
nums[b-1]=18
nums = 100123
t = 99
nums[b-1]=-9
nums = 99
t = 463
nums[b-1]=287
nums = 463
t = 5623
nums[b-1]=287
nums = 5623
t = 978
nums[b-1]=287
nums = 978
t = 100123
nums[b-1]=49
nums = 100123
t = 99
nums[b-1]=18
nums = 99
t = 5623
nums[b-1]=463
nums = 5623
t = 978
nums[b-1]=463
nums = 978
t = 100123
nums[b-1]=287
nums = 100123
t = 99
nums[b-1]=49
nums = 99
t = 100123
nums[b-1]=463
nums = 100123
t = 100123
nums[b-1]=978
nums = 100123
t = 100123
nums[b-1]=5623
nums = 100123
-10 -9 18 49 99 287 463 978 5623 100123

لست متواجد بشكل يومي

#7

السلام عليكم

عندي سؤال واريد الاجابه عليه..

جزاكم الله خيرا

تم تعديل هذه المشاركة بواسطة fer66 في 28 نوفمبر 2004 في 05:31

#8

سؤالي؟؟

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

import javax.swing.JOptionPane

وشكرا جزيلا مقدما..

تم تعديل هذه المشاركة بواسطة fer66 في 28 نوفمبر 2004 في 05:34

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

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