Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

حاسبة مع سجل العمليات

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 56 من 56.

challenge icon

التحدي

متوسط

قم ببناء آلة حاسبة تعالج سلسلة من التعبيرات، وتتعامل مع الأخطاء، وتُبلغ عن سجل لكل عامل (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، طباعة النتيجة؛ بناء سجل لكل عملية؛
// التقرير النهائي بترتيب ثابت، فقط للعمليات التي نجحت

جميع دروس المنطق والتدفق