这是一个小程序,对计算器的简单实现。不过只能计算个位数的加减乘除余。
主要是对枚举的值,以及堆栈还有队列的运用进行一次尝试。
enum Operation: Character {
case plus = "+"
case minus = "-"
case times = "*"
case division = "/"
case surplus = "%"
}
enum Number: Character {
case zero = "0"
case one = "1"
case two = "2"
case three = "3"
case four = "4"
case five = "5"
case six = "6"
case seven = "7"
case eight = "8"
case nine = "9"
}
enum Input {
case value(Number)
case opration(Operation)
}
class Stack: StackProtocol {
typealias Element = Input
var datas: [Input] = []
}
class Calculator {
var data = [Input]()
func run() {
var input: [Int8] = []
gets(&input)
inputData(input: String(cString: &input))
}
/// 把输入的数据解析成运算数据
func inputData(input: String) {
for c in input.characters {
if let num = Number(rawValue: c) {
data.append(Input.value(num))
}
if let ope = Operation(rawValue: c) {
data.append(Input.opration(ope))
}
}
}
/// 把中缀表达式变成后缀表达式
func changeData() {
let s1 = Stack()
let s2 = Stack()
for d in data {
switch d {
case .value:
s1.push(item: d)
case .opration(let n):
if let top = s2.top() {
} else {
s2.push(item: d)
}
break
}
}
}
func ouputData() -> Int {
return 0;
}
}
let cal = Calculator()
cal.run()