summaryrefslogtreecommitdiff
path: root/src
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
initial commitHEADmain
Diffstat (limited to 'src')
-rw-r--r--src/Calculator.java53
-rw-r--r--src/calculator.d49
-rw-r--r--src/calculator.hs22
-rw-r--r--src/calculator.rs58
-rw-r--r--src/calculator.swift41
5 files changed, 223 insertions, 0 deletions
diff --git a/src/Calculator.java b/src/Calculator.java
new file mode 100644
index 0000000..6f2cb94
--- /dev/null
+++ b/src/Calculator.java
@@ -0,0 +1,53 @@
+import java.util.Scanner;
+
+class InvalidOperatorException extends Exception {
+ public InvalidOperatorException(String errorMessage) {
+ super(errorMessage);
+ }
+}
+
+public class Calculator {
+ private static float calculate(String operator, float number1, float number2) throws InvalidOperatorException {
+ switch(operator) {
+ case "+":
+ return number1 + number2;
+ case "-":
+ return number1 - number2;
+ case "/":
+ return number1 / number2;
+ case "*":
+ return number1 * number2;
+ default:
+ throw new InvalidOperatorException("invalid operator used!");
+ }
+ }
+
+ public static void main(String[] args) {
+ Scanner scan = new Scanner(System.in);
+
+ float number1, number2, result;
+ String operator;
+
+ try {
+ System.out.print("enter a number: " );
+ number1 = scan.nextFloat();
+ System.out.print("enter an operator: ");
+ scan.nextLine();
+ operator = scan.nextLine();
+ System.out.print("enter another number: ");
+ number2 = scan.nextFloat();
+ } catch (Exception e) {
+ System.out.println("couldn't get your input!");
+ return;
+ }
+
+ try {
+ result = calculate(operator, number1, number2);
+ } catch (InvalidOperatorException e) {
+ System.out.println(e.getMessage());
+ return;
+ }
+
+ System.out.println(result);
+ }
+}
diff --git a/src/calculator.d b/src/calculator.d
new file mode 100644
index 0000000..c7933be
--- /dev/null
+++ b/src/calculator.d
@@ -0,0 +1,49 @@
+import std.stdio;
+import std.string;
+
+class InvalidOperatorException : Exception {
+ this(string msg, string file = __FILE__, size_t line = __LINE__) {
+ super(msg, file, line);
+ }
+}
+
+float calculate(char[] operator, float number1, float number2) {
+ foreach (c; operator) {
+ switch(c) {
+ case '+':
+ return number1 + number2;
+ case '-':
+ return number1 - number2;
+ case '/':
+ return number1 / number2;
+ case '*':
+ return number1 * number2;
+ default:
+ continue;
+ }
+ }
+ throw new InvalidOperatorException("invalid operator used!");
+}
+
+void main() {
+ char[] operator;
+ float number1;
+ float number2;
+ write("enter a number: ");
+ readf("%f", &number1);
+
+ write("enter an operator: ");
+ readf(" %s\n", &operator);
+
+ write("enter another number: ");
+ readf(" %f", &number2);
+
+ float result;
+ try {
+ result = calculate(operator, number1, number2);
+ } catch (InvalidOperatorException e) {
+ writeln(e);
+ }
+
+ writeln(result);
+}
diff --git a/src/calculator.hs b/src/calculator.hs
new file mode 100644
index 0000000..1da13af
--- /dev/null
+++ b/src/calculator.hs
@@ -0,0 +1,22 @@
+calculate :: String -> Float -> Float -> Float
+calculate operator number1 number2 = case operator of
+ "+" -> number1 + number2
+ "-" -> number1 - number2
+ "/" -> number1 / number2
+ "*" -> number1 * number2
+ _ -> error "invalid operator!"
+
+main :: IO()
+main = do
+ putStr "enter a number: "
+ input<-getLine
+ let number1 = (read input :: Float)
+
+ putStr "enter an operator: "
+ operator<-getLine
+
+ putStr "enter another number: "
+ input<-getLine
+ let number2 = (read input :: Float)
+
+ print (calculate operator number1 number2)
diff --git a/src/calculator.rs b/src/calculator.rs
new file mode 100644
index 0000000..eab3ac8
--- /dev/null
+++ b/src/calculator.rs
@@ -0,0 +1,58 @@
+use std::error::Error;
+use std::fmt;
+use std::io;
+use std::process;
+
+#[derive(Debug)]
+struct UnknownOperatorError;
+
+impl Error for UnknownOperatorError {}
+
+impl fmt::Display for UnknownOperatorError {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "invalid operator!")
+ }
+}
+
+fn get_input() -> String {
+ let mut res = String::new();
+ io::stdin()
+ .read_line(&mut res)
+ .expect("failed to get input!");
+
+ return (*res).trim().to_string();
+}
+
+fn get_number() -> f32 {
+ get_input()
+ .parse::<f32>()
+ .expect("failed to get your number (possible lack of rizz)")
+}
+
+fn calculate(operator: &String, number1: &f32, number2: &f32) -> Result<f32, UnknownOperatorError> {
+ match operator.as_str() {
+ "+" => Ok(number1 + number2),
+ "-" => Ok(number1 - number2),
+ "/" => Ok(number1 / number2),
+ "*" => Ok(number1 * number2),
+ _ => Err(UnknownOperatorError),
+ }
+}
+
+fn main() {
+ println!("enter a number: ");
+ let number1 = get_number();
+ println!("enter an operator: ");
+ let operator = get_input();
+ println!("enter another number: ");
+ let number2 = get_number();
+
+ let res = calculate(&operator, &number1, &number2);
+ match res {
+ Ok(i) => println!("{i}"),
+ Err(e) => {
+ eprintln!("{e}");
+ process::exit(1);
+ }
+ }
+}
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()