مساعدة في الجافا ics102 من أهل الخبرة

الموضوع في 'علوم الحاسب الآلي' بواسطة أخوكم الصغير, بتاريخ ‏31 مارس 2009.

  1. أخوكم الصغير

    انضم:
    ‏30 مارس 2009
    المشاركات:
    4
    التقييمات:
    +0 / 0 / -0
    السلام عليكم ورحمة الله وبركاته

    عندي استفسار عن تمرين جالس أقراه في فصل الـ Array part 1 ونص التمرين مايلي:
    ------------------------------------------------
    كود:
    Design and implement a java code that should check whether the two arrays a and b have the same elements on some order, ignoring multiplicities.
    For example, the two arrays
    1 4 9 16 9 7 4 9 11
    and
    11 11 7 9 16 4 1
    would be considered to have the same set.
    ------------------------------------------------

    أتمنى من أي واحد أن يفهمني الفكرة فقط ومو شرط الجواب النهائي

    مع إنني حاولت أجاوب وطلعت بالكود التالي، ولكنني حاس إنه فيه أخطاء وممكن يكون أسهل من كذا:

    كود:
    public class ComparingArraysI {
    
        public static void main(String[] args) {
        	int[] arrayA = {1, 4, 9, 16, 9 , 7, 4, 9, 11};
        	int[] arrayB = {11, 11, 7, 9, 16, 4, 1};
        	//{11, 11, 7, 9, 16, 4, 1};
        	boolean result= false;
        	
        	for(int i=0; i<arrayA.length; i++)
        	{
        		result= false;
        		for(int j=0; j<arrayB.length; j++)
    	    	{
    	    		if(arrayA[i] == arrayB[j])
    	    		{
    	    			result = true;
    	    			break;
    	    		}
        		}
        		if(result == false)
        		{
        			System.out.println("ERROR");
        			//break;
        			System.exit(0);
        		}
        	}
        	
        	for(int j=0; j<arrayB.length; j++)
        	{
        		result= false;
        		for(int i=0; i<arrayA.length; i++)
    	    	{
    	    		if(arrayB[j] == arrayA[i])
    	    		{
    	    			result = true;
    	    			break;
    	    		}
        		}
        		if(result == false)
        		{
        			System.out.println("ERROR");
        			//break;
        			System.exit(0);
        		}
        	}
        	
        	if(result == true)
        		System.out.println("OK");		    	 
    
        		
        }  
    }
    أنتظر ردودكم مع إنني واثق إنه في شباب أصحاب خبرة كبيرة في الجافا ممكن أستفيد منهم
     
  2. mahboop

    mahboop عضو

    انضم:
    ‏13 نوفمبر 2006
    المشاركات:
    473
    التخصص:
    computer science
    الجامعة:
    UNL
    سنة التخرج:
    2021
    الجنس:
    ذكر
    الوظيفة:
    PhD student
    الإقامة:
    Lincoln, NE, USA
    الصفحة الرئيسية:
    التقييمات:
    +7 / 0 / -1
    سلام عليكم ورحمة الله وبركاته
    ---
    اهلا بيك اخوي ، ومرحبا معنا
    واحيي فيك روح الـJava
    واي سؤال عندك لا تتردد ، احنا حاضرين في اي وقت
    انت في بداية المشوار ics102 ، ومهم انك تطلع من الكورس وانت فاهم صح
    ----
    ما اطول عليك
    بالنسبة لهذي المسئلة ، اذكرها يوم كنا ندرس ics102 زيكم الحين (واو ، راحت ذيك الايام) :(
    المهم :
    الفكرة انك تمسك رقم من المجموعة الاولى ، وتقارنه مع كل الارقام اللي في المجموعة الثانية
    واذا خلصوا الارقام اللي في المجموعة الثانية ، ولا حصلت اي واحد يساويه ، يعني ان المجموعتين غير متساويتين
    يعني ما تشوف التساوي ، بل تشوف الارقام اللي ما تساويه في المجموعة الثانية.
    يعني تتأكد من عدم وجود الخطأ ، مش تثبت الصحيح ...
    ---
    ان شاء الله الفكرة طلعت واضحة
    واي استفسار ثانية انا حاضر
    -
    تحياتي لكم
     
  3. أخوكم الصغير

    انضم:
    ‏30 مارس 2009
    المشاركات:
    4
    التقييمات:
    +0 / 0 / -0
    يعني هل تقصد أنني أقوم مثلاً بمقارنة الرقم (1) من المجموعة الأولى بجميع الأرقام من المجموعة الثانية والتي تشمل على: (11 11 7 9 16 4 1) وأبحث عن الإختلاف لا عن التساوي؟؟؟ ولكن فيه نقطة غامضة،، هل لابد أن أحفظ متغير يسجل لي عدد المختلفين في كل لووب داخلي وأقوم وأقارنة بطول المصفوفة الثانية، فإذا كانت متساوية فإن المصفوفتين غير متساويتين.

    أتمنى توضح لي أكثر أخوي،، وادعوا لي بالتوفيق
     
  4. mahboop

    mahboop عضو

    انضم:
    ‏13 نوفمبر 2006
    المشاركات:
    473
    التخصص:
    computer science
    الجامعة:
    UNL
    سنة التخرج:
    2021
    الجنس:
    ذكر
    الوظيفة:
    PhD student
    الإقامة:
    Lincoln, NE, USA
    الصفحة الرئيسية:
    التقييمات:
    +7 / 0 / -1
    اي نعم ، كذا الحركة


    هذي الحركة ممكن تسويها ، لكن ما تحتاجها ، بالفكرة الاولى ممكن تطلع النتيجة
    لان هذي بتزيد الشغل في البرنامج ، not efficient
    ---
    ولك تحياتي
    وبلغنا بكل ابداعاتك
     
  5. أخوكم الصغير

    انضم:
    ‏30 مارس 2009
    المشاركات:
    4
    التقييمات:
    +0 / 0 / -0
    أخوي محبوب، صبرك علي شوي لأني راح أغلبك

    شوف أخوي حتى طريقتك لاتعطي نتيجة صحيحة 100%

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

    خذ مثال:
    لو كانت لدي مصوفتين(باستخدم حروف عربية لتسمية المصفوفتين) :) :
    أ:{1, 4, 9, 16, 9 , 7, 4, 9, 11};
    ب:{11, 11, 7, 9, 16, 4, 1، 3};

    بطريقتك لمن أقارن كل عنصر من المجموعة الأولى بجميع عناصر المجموعة الثانية تطلع النتيجة صحيحة، لأن معنى اللي شغالين نسوي هو التأكد من أن المجموعة أ مجموعة جزئية من المجموعة ب ،، ولكن السؤال لا يريد ذلك.

    أتمنى أخوي إنك فهمت مقصدي وإذا أنا غلطان نبهني وعلمني

    وفقك ربي ياغالي
     
  6. mahboop

    mahboop عضو

    انضم:
    ‏13 نوفمبر 2006
    المشاركات:
    473
    التخصص:
    computer science
    الجامعة:
    UNL
    سنة التخرج:
    2021
    الجنس:
    ذكر
    الوظيفة:
    PhD student
    الإقامة:
    Lincoln, NE, USA
    الصفحة الرئيسية:
    التقييمات:
    +7 / 0 / -1
    سلام عليكم ورحمة الله وبركاته
    --
    اهلا بيك اخوي (أخوكم الصغير) الكبير
    مرة ثانية
    --
    طبعا انا سويت البرنامج وشغال عندي
    لكن يختلف بسيطا عن اللي قلت لك
    وبعدين اكتشفت انه يشبه اللي انت مسوي فوق
    --
    هذا هو الكود
    كود HTML:
    /*
     * Design and implement a java code that should check
     whether the two arrays a and b have the same elements on some order,
     ignoring multiplicities.
     For example, the two arrays
     1 4 9 16 9 7 4 9 11
     and
     11 11 7 9 16 4 1
     would be considered to have the same set.
     */
    
    /**
     * @date 1 April 2009
     * @author Mohammed Al-Ali, 25XXXX :)
     */
    public class SameSetArray {
        public static void main(String[] args){
            int[] arrayA = {1, 4, 9, 16, 9 , 7, 4, 9, 11};
        	int[] arrayB = {11, 11, 7, 9, 16, 4, 1};
    
            System.out.println(sameArray(arrayA, arrayB));
        }
    
        public static boolean sameArray(int[] a, int[] b){
    
            boolean same;
            for(int i = 0; i < a.length; i++){
                System.out.println("a" + i + "="+ a[i]);
                same = false;
                for(int j = 0; j < b.length; j++){
                    System.out.println("b" + i +"="+ b[j]);
                    if(a[i] == b[j]){
                        same = true;
                        break;
                    }
                }
                if(!same){
                    return false;
                }
            }
            return true;
        }
    }
    
    
    --
    اتمنى ما اكون ازعجتك و عورت راسك بكلامي :)
    واتمنى لك الاستفادة والاستمرار في هذا الحماس
    واي سؤال احنا حاضرين
    --
    تحياتي لكم
     
  7. أخوكم الصغير

    انضم:
    ‏30 مارس 2009
    المشاركات:
    4
    التقييمات:
    +0 / 0 / -0
    أخوي محبوب، صحيح الكود مشابه لكن تبقى نفس المشكلة اللي ذكرت لك عنها،،، وعلشان أوضح مقصدي

    لنفرض أن المجموعة الأولى تبقى كماهي، ولكن المجموعة الثانية نضيف لها عنصر جديد وليكن رقم 3.

    عند تطبيق برنامجك يعطيني نتيجة True والمفروض أن يكون False

    لذلك فأنا أقترح حلول، إما أن نعمل لووب جديد يجعل المجموعة الثانية هي الـ outer loop والمجموعة الأولى هي الـ inner loop يعني نعكس الكود اللي في الأعلى،،،، ولكن هذا قد يزيد من وقت عمل البرنامج.

    أو نعمل مصفوفة بحجم المصفوفة الثانية وتكون مصفرة تماماً ،فعند تحقيق شرط التساوي تقوم بتحويل موقع العدد في المصفوفة الجديدة والذي يطابق موقع العدد المتساوي من المجموعة الثانية، وهكذا
    وفي الأخير إذا وجدت أنه يوجد أي خانة مازالت صفرية فإن أحكم بثقة بأن المجموعتين غير متساويتين.

    :) ما رأيك
     
  8. Abo Se3bolah

    Abo Se3bolah عضو

    انضم:
    ‏1 سبتمبر 2007
    المشاركات:
    791
    الإقامة:
    عمارة 26 غرفة 224
    التقييمات:
    +2 / 0 / -0
    هع هع هلا يا شباب انا حليت التمرين هذا الترم اللي راح بكذا طريقة بس اسهل طريقة وهي بنفس الوقت اطول طريقة انك تسوي التالي:-

    نستد لوب يعني لوبين جوة بعض الاولى تمسك كل عنصر من عناصر المصفوفة (أ) وتقارنها بكل عناصر المصفوفة (ب) اول ما تلاقيها تخزن قيمة ترو وتسوي بريك وترجع للوب الأولى اللي برة وتمسك العنصر اللي بعده من (أ) واذا مالقته على طول يطلع رسالة انهم غير متشابهين ويسوي اكزت

    بعدين تسوي لوبين بعد بس عكس اللي فوق تمسك كل عناصر (ب) تدورها ب (أ) ونفس الطريقة بالضبط وطبعا نفرض ان اللوبين الأولى طلعو ترو والثانية طلعو ترو يصيرون متشابهين دقايق بس ادور التمرين واجيب الكود من الهارد وبالتوفيق
     
  9. Abo Se3bolah

    Abo Se3bolah عضو

    انضم:
    ‏1 سبتمبر 2007
    المشاركات:
    791
    الإقامة:
    عمارة 26 غرفة 224
    التقييمات:
    +2 / 0 / -0
    هع هع هلا يا شباب انا حليت التمرين هذا الترم اللي راح بكذا طريقة بس اسهل طريقة وهي بنفس الوقت اطول طريقة انك تسوي التالي:-

    نستد لوب يعني لوبين جوة بعض الاولى تمسك كل عنصر من عناصر المصفوفة (أ) وتقارنها بكل عناصر المصفوفة (ب) اول ما تلاقيها تخزن قيمة ترو وتسوي بريك وترجع للوب الأولى اللي برة وتمسك العنصر اللي بعده من (أ) واذا مالقته على طول يطلع رسالة انهم غير متشابهين ويسوي اكزت

    بعدين تسوي لوبين بعد بس عكس اللي فوق تمسك كل عناصر (ب) تدورها ب (أ) ونفس الطريقة بالضبط وطبعا نفرض ان اللوبين الأولى طلعو ترو والثانية طلعو ترو يصيرون متشابهين دقايق بس ادور التمرين واجيب الكود من الهارد وبالتوفيق
     
  10. mahboop

    mahboop عضو

    انضم:
    ‏13 نوفمبر 2006
    المشاركات:
    473
    التخصص:
    computer science
    الجامعة:
    UNL
    سنة التخرج:
    2021
    الجنس:
    ذكر
    الوظيفة:
    PhD student
    الإقامة:
    Lincoln, NE, USA
    الصفحة الرئيسية:
    التقييمات:
    +7 / 0 / -1
    سلام عليكم
    ---
    انا فهمت قصدك اخوي (اخوكم الصغير)
    والحركة اللي قلتها بتشتغل عدل
    لكن not efficient بتاخذ وقت واجد
    لازم نشوف طريقة ثانية another algorithm بحيث يقلل من الوقت مال البرنامج
    ---
    فكر انت ، وحاول تطلع algorithm
    وتحياتي لجهودكم
     
جاري تحميل الصفحة...
مواضيع شبيهة - مساعدة في الجافا ics102 من أهل الخبرة
  1. kalotai
    الردود:
    0
    المشاهدات:
    543
  2. كميكال2016
    الردود:
    10
    المشاهدات:
    5,093
  3. COEngineer
    الردود:
    10
    المشاهدات:
    1,423
  4. A.A.S
    الردود:
    4
    المشاهدات:
    787
  5. كورنفليكس
    الردود:
    7
    المشاهدات:
    895
  6. legendkj
    الردود:
    1
    المشاهدات:
    410
  7. أربع إكك
    الردود:
    2
    المشاهدات:
    1,093
  8. Eng5alid
    الردود:
    2
    المشاهدات:
    832
  9. آلجنوبي
    الردود:
    0
    المشاهدات:
    775
  10. Abdulaziz Alonizi
    الردود:
    2
    المشاهدات:
    1,158

مشاركة هذه الصفحة