أي من تدوينات postfix التالية تمثل بشكل صحيح Infix Sum 1+2+3+4؟
-
27-09-2019 - |
سؤال
أقوم باختبار محول infix-to-postfix إلى infix ووجدت نوعًا من عدم اليقين. على سبيل المثال ، مجموع Infix بسيط
1 + 2 + 3 + 4
يمكن تحويلها إلى postfix واحد
1 2 + 3 + 4 +
على افتراض أن المشغلين ذوي الأسبقية متساوية لا يتم تجميعهم. إذا كانوا إذن أحصل
1 2 3 4 + + +
من ناحية أخرى ، يمكن تحويل جميع تعبيرات postfix التالية إلى المبلغ الأولي
1 2 + 3 + 4 +
1 2 + 3 4 + +
1 2 3 4 + + +
هل كل هذه التعبيرات postfix صحيحة؟
update1
إذا قمت بعمل مثل هذا المحول ، إلى أي نموذج ستختار؟ أحتاج إلى اختيار واحد للاختبار.
المحلول
تحتاج إلى تحديد قيد إضافي.
رياضيا ، تعبيرات postfix الخاصة بك كلها متشابهة. ولكن على إضافة عدد صحيح من الكمبيوتر ، ليست بالفعل تبادلًا بسبب الفائض.
استبدال 1 2 3 4 مع ABCD والنظر في إمكانية الفائض. تحدد معظم لغات البرمجة ذلك a + b + c + d
يجب تقييم اليسار إلى اليمين بحيث a b + c + d +
هي الترجمة الصحيحة الوحيدة.
فقط عندما تحدد أن ترتيب التقييم يكون "غير محدد" جميع إصدارات postfix متكافئة. كان هذا هو الحال بالنسبة لمجموعات المترجمين (أقدم).
نصائح أخرى
نعم ، كل شيء صحيح. أنها تتوافق مع تعبيرات Infix المقصودة:
((1 + 2) + 3) + 4
(1 + 2) + (3 + 4)
1 + (2 + (3 + 4))
+
مربك - إنه مبتدئ ، لذلك في الواقع ، كل نتيجة يبدو صيح.
التفكير في استبدال +
مع المشغلين الآخرين: 1 a 2 b 3 c 4
.
النتيجة الصحيحة هنا ، للمشغلين اليساريين ، هي
1 2 a 3 b 4 c
لذلك ، في حالتك ، أتوقع 1 2 + 3 + 4 +