summaryrefslogtreecommitdiff
path: root/src/calculator.swift
diff options
context:
space:
mode:
authorseth <[email protected]>2023-07-03 23:54:18 -0400
committerseth <[email protected]>2023-07-04 00:05:04 -0400
commit369eb89ea18250bad1b3ef73280b7683ee1c6f93 (patch)
tree8cc728a4db0e6431b5320295e0ddbdd9a6ab1d2b /src/calculator.swift
initial commitHEADmain
Diffstat (limited to 'src/calculator.swift')
-rw-r--r--src/calculator.swift41
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()