diff options
Diffstat (limited to 'src/calculator.swift')
| -rw-r--r-- | src/calculator.swift | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/calculator.swift b/src/calculator.swift new file mode 100644 index 0000000..dfd4c4c --- /dev/null +++ b/src/calculator.swift @@ -0,0 +1,41 @@ +enum InvalidOperatorError: Error { + case operatorNotSupported +} + +func calculate(operatorThing: String, number1: Float, number2: Float) throws -> Float { + switch operatorThing { + case "+": + return number1 + number2 + case "-": + return number1 - number2 + case "/": + return number1 / number2 + case "*": + return number1 * number2 + default: + throw InvalidOperatorError.operatorNotSupported + } +} + + +func main() { + print("enter a number:") + let number1 = Float(readLine()!)! + print("enter an operator:") + let operatorThing = readLine()! + print("enter another number:") + let number2 = Float(readLine()!)! + + do { + let result = try calculate(operatorThing: operatorThing, number1: number1, number2: number2) + print(result) + } catch InvalidOperatorError.operatorNotSupported { + print("invalid operator!") + return + } catch { + print("unexpected error!") + return + } +} + +main() |
