Menu
CoddyTech

带历史记录的计算器

本课属于 Coddy Swift 学习旅程的“逻辑与流程”单元。第 56 课,共 56 课。

challenge icon

挑战

中等

构建一个计算器,用于处理一系列表达式、容忍错误,并在最后报告每个运算符的历史记录。

读取一行输入:一个以逗号分隔的 a:op:b 表达式列表。运算符包括 +、-、*、/。定义一个枚举 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 在线编辑器