• 0

هل يمكن المساعدة في مسألة برمجية في لغة C؟

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

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

*نقطة

* - مجال

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

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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("ᵠ");
        }

    }
}

 

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن