اذهب إلى المحتوى

السؤال

نشر

 طلب منا في الجامعة كتابة برنامج عن التقاطع بين المجالين [AB] و [CD].

هناك 3 ثلاث فئات تقاطع و

*نقطة

* - مجال

* - مجموعة فارغة

كيفية كتابة هذا البرنامج لجميع الحالات (هناك العديد)بحيث تكوون محققة ؟؟

Recommended Posts

  • 1
نشر (معدل)

ليس لدي خبرة جيدة بلغة الـ C ولكن يمكنني ان أعطيك فكرة الحل. وقد كتبت برنامج بلغة الجافا لتطلع عليه أيضاً.

- اولا عليك تحليل ما ادخله المستخدم لتحصل على اطراف كل مجال وتخزنها كقيمة عددية (int, float,...)
 فمثلا المجال الأول [a,b]  والثاني ]c,d]
- تقوم بتعيين بداية مجال التقاطع قيمةً وإشارةً (اي مغلق ام مفتوح [ / ] ) بأن تأخذ قيمة وإشارة القيمة الاكبر من بين بدايتي المجالين (أي  a و c )
   .اذا كانتا متساويتين ناخذ قيمتهما وإشارة المجال المفتوح ان وجدت في اي منهما والمغلق ان لم توجد.

- تقوم بتعيين نهاية مجال التقاطع قيمةً وإشارةً (اي مغلق ام مفتوح [ / ] ) بأن تأخذ قيمة وإشارة القيمة الأصغر من بين نهايتي المجالين (أي  b و d ) .اذا كانتا متساويتين ناخذ قيمتهما وإشارة المجال المفتوح ان وجدت في اي منهما والمغلق ان لم توجد.

- اذا كانت بداية مجال التقاطع اصغر من نهايته, فتقاطع المجالين هو مجال (الحالة 1)
  اذا كانت بداية مجال التقاطع تساوي نهايته, وكانت كلتا الإشارتين هما مجال مغلق( [ ] ), فتقاطع المجالين هو نقطة واحدة (الحالة 2)
  أما في ما عدا ذلك, فتقاطع المجالين هو المجموعة الخالية φ فاي (الحالة 3)
 


import java.util.Scanner;

public class Programming_problems {

    public static void main(String[] args) {
        //------------------getting input from the user-------------------------
        // input must be in this format: ]/[ a, b ]/[ (( ex. [-2,15.3[ ))
        Scanner scan = new Scanner(System.in);
        String S1 = scan.next();
        String S2 = scan.next();

        //------------------converting strings to numbers-----------------------
        String temp[];
        char sings[] = new char[2];
        //a and b are the start and end of the first range respectively.
        temp = S1.split("[,\\]\\[]");
        float a = Float.parseFloat(temp[1]);
        float b = Float.parseFloat(temp[2]);
        //c and d are the start and end of the second range respectively.
        temp = S2.split("[,\\]\\[]");
        float c = Float.parseFloat(temp[1]);
        float d = Float.parseFloat(temp[2]);
        //e and f are the start and end of the Intersection respectively.
        float e, f;

        //----------------claculating both ends of Intersection range-----------
        // assign the highest start of both ranges to the start of Intersection 
        if (a < c) {
            e = c;
            sings[0] = S2.charAt(0);
        } else if (a > c) {
            e = a;
            sings[0] = S1.charAt(0);
        } else {
            e = a;
            if (S1.charAt(0) == ']' || S2.charAt(0) == ']') {
                sings[0] = ']';
            }else{
                sings[0] = '[';
            }
        }
        // assign the lowest end of both ranges to the end of Intersection
        if (b < d) {
            f = b;
            sings[1] = S1.charAt(S1.length() - 1);
        } else if (b > d){
            f = d;
            sings[1] = S2.charAt(S2.length() - 1);
        }else {
            f=d;
            if (S1.charAt(0) == '[' || S2.charAt(0) == '[') {
                sings[1] = '[';
            }else{
                sings[1] = ']';
            }
        }

        //------------------calculating the Intersection------------------------
        //check whether f is greater than e, if so, then the Intersection is a range indeed.
        if (e < f) {
            System.out.println("" + sings[0] + e + "," + f + sings[1]);
        } //check whether f is equals to e ,if so, then the Intersection is a single element.
        else if (e == f && sings[0] == '[' && sings[1] == ']') {
            System.out.println("{" + e + "}");
        } // check whether f is less than e(which can't be a valid range), if so, then the Intersection is Phi. 
        else {
            System.out.println("ᵠ");
        }

    }
}

 

تم التعديل في بواسطة عمر الحلو

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...