מחשבון עם היסטוריה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 56 מתוך 56.
אתגר
בינוניבנו מחשבון שמעבד זרם של ביטויים, מתמודד עם שגיאות ומדווח בסוף על היסטוריה לכל אופרטור.
קראו שורת קלט אחת: רשימה של ביטויים 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, להדפיס את התוצאה; לבנות היסטוריה לכל פעולה;
// דוח סופי בסדר קבוע, רק לפעולות שהצליחו
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין