عبد الغني محمدي نشر 8 نوفمبر 2017 أرسل تقرير نشر 8 نوفمبر 2017 طلب منا في الجامعة كتابة برنامج عن التقاطع بين المجالين [AB] و [CD]. هناك 3 ثلاث فئات تقاطع و *نقطة * - مجال * - مجموعة فارغة كيفية كتابة هذا البرنامج لجميع الحالات (هناك العديد)بحيث تكوون محققة ؟؟ اقتباس
1 عمر الحلو نشر 9 نوفمبر 2017 أرسل تقرير نشر 9 نوفمبر 2017 (معدل) ليس لدي خبرة جيدة بلغة الـ 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("ᵠ"); } } } تم التعديل في 9 نوفمبر 2017 بواسطة عمر الحلو اقتباس
السؤال
عبد الغني محمدي
طلب منا في الجامعة كتابة برنامج عن التقاطع بين المجالين [AB] و [CD].
هناك 3 ثلاث فئات تقاطع و
*نقطة
* - مجال
* - مجموعة فارغة
كيفية كتابة هذا البرنامج لجميع الحالات (هناك العديد)بحيث تكوون محققة ؟؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.