حاسبة مع سجل العمليات
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 56 من 56.
التحدي
متوسطقم ببناء آلة حاسبة تعالج سلسلة من التعبيرات، وتتعامل مع الأخطاء، وتُبلغ عن سجل لكل عامل (operator) في النهاية.
اقرأ سطراً واحداً من المدخلات: قائمة مفصولة بفاصلة من تعبيرات a:op:b. العوامل هي +، -، *، /. قم بتعريف enum باسم CalcError: Error مع الحالات parse، divideByZero، unknownOp.
لكل تعبير، بالترتيب:
- اطبع
= <n>عند النجاح - اطبع
parse، أوdivZero، أوunknownOpلكل حالة خطأ
بعد الأسطر الخاصة بكل تعبير، اطبع سطراً واحداً لكل عامل نجح مرة واحدة على الأقل، بالترتيب الثابت +، -، *، /:
<op>: count=<n> sum=<total>count هو عدد المرات التي نجح فيها هذا العامل؛ sum هو مجموع تلك النتائج الناجحة.
للمدخلات 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2، المخرجات هي:
= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14جرّب بنفسك
let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]
// TODO: enum CalcError; func compute(...) throws -> Int;
// حلقة تكرار، do/try، طباعة النتيجة؛ بناء سجل لكل عملية؛
// التقرير النهائي بترتيب ثابت، فقط للعمليات التي نجحت
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات