diff options
| author | seth <[email protected]> | 2023-07-03 23:54:18 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-07-04 00:05:04 -0400 |
| commit | 369eb89ea18250bad1b3ef73280b7683ee1c6f93 (patch) | |
| tree | 8cc728a4db0e6431b5320295e0ddbdd9a6ab1d2b /src/calculator.d | |
Diffstat (limited to 'src/calculator.d')
| -rw-r--r-- | src/calculator.d | 49 |
1 files changed, 49 insertions, 0 deletions
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); +} |
