From a6731bd9686a7fbf2f8757026152de555e43ad85 Mon Sep 17 00:00:00 2001 From: SGGStudios Date: Mon, 24 Aug 2026 10:31:58 +0200 Subject: [PATCH 1/2] Please review when possible --- Calculator.Cybernexus-code/Calculator.slnx | 4 ++ .../Calculator/Calculator.csproj | 14 ++++ .../Calculator/Program.cs | 71 +++++++++++++++++++ .../CalculatorLibrary/CalculatorLibrary.cs | 65 +++++++++++++++++ .../CalculatorLibrary.csproj | 13 ++++ 5 files changed, 167 insertions(+) create mode 100644 Calculator.Cybernexus-code/Calculator.slnx create mode 100644 Calculator.Cybernexus-code/Calculator/Calculator.csproj create mode 100644 Calculator.Cybernexus-code/Calculator/Program.cs create mode 100644 Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs create mode 100644 Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.csproj diff --git a/Calculator.Cybernexus-code/Calculator.slnx b/Calculator.Cybernexus-code/Calculator.slnx new file mode 100644 index 00000000..acd3a736 --- /dev/null +++ b/Calculator.Cybernexus-code/Calculator.slnx @@ -0,0 +1,4 @@ + + + + diff --git a/Calculator.Cybernexus-code/Calculator/Calculator.csproj b/Calculator.Cybernexus-code/Calculator/Calculator.csproj new file mode 100644 index 00000000..8acb7da5 --- /dev/null +++ b/Calculator.Cybernexus-code/Calculator/Calculator.csproj @@ -0,0 +1,14 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + diff --git a/Calculator.Cybernexus-code/Calculator/Program.cs b/Calculator.Cybernexus-code/Calculator/Program.cs new file mode 100644 index 00000000..c417d24d --- /dev/null +++ b/Calculator.Cybernexus-code/Calculator/Program.cs @@ -0,0 +1,71 @@ + +using System.Text.RegularExpressions; +using CalculatorLibrary; + +bool endApp = false; + +Calculator calculator = new Calculator(); +while (!endApp) +{ + Console.Clear(); + string? numInput1 = ""; + string? numInput2 = ""; + double result = 0; + + Console.WriteLine("Type a number, and then press Enter"); + numInput1 = Console.ReadLine(); + + double cleanNum1 = 0; + while (!double.TryParse(numInput1, out cleanNum1)) + { + Console.WriteLine("This is not valid input. Please enter an integer value: "); + numInput1 = Console.ReadLine(); + }; + + Console.WriteLine("Type another number, and then press Enter"); + numInput2 = Console.ReadLine(); + + double cleanNum2 = 0; + while(!double.TryParse(numInput2, out cleanNum2)) + { + Console.WriteLine("This is not valid input. Please enter an integer value: "); + numInput2 = Console.ReadLine(); + }; + + Console.WriteLine("Cjhoose an operator from the following list:"); + Console.WriteLine("\t+ - Add"); + Console.WriteLine("\t- - Subtract"); + Console.WriteLine("\t* - Multiply"); + Console.WriteLine("\t/ - Divide"); + + string? op = Console.ReadLine(); + + if (op == null || !Regex.IsMatch(op, "^([+\\-*/])$")) + { + Console.WriteLine("Error! Please enter a valid operator."); + } + else + { + try + { + result = calculator.DoOperation(cleanNum1, cleanNum2, op); + if (double.IsNaN(result)) + { + Console.WriteLine("This operation will result in a mathematical error.\n"); + } + else Console.WriteLine("Your result: {0:0.##}\n", result); + } + catch (Exception e) + { + Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: " + e.Message); + } + } + Console.WriteLine("------------------------\n"); + + Console.WriteLine("Press 'q' and Enter to quit the app, or press any other key and Enter to continue: "); + + if (Console.ReadKey().Key == ConsoleKey.Q) endApp = true; + +} +calculator.Finish(); +return; \ No newline at end of file diff --git a/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs new file mode 100644 index 00000000..e1757ea8 --- /dev/null +++ b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs @@ -0,0 +1,65 @@ +using Newtonsoft.Json; + +namespace CalculatorLibrary +{ + public class Calculator + { + JsonWriter writer; + public Calculator() + { + StreamWriter logFile = File.CreateText("CalculatorLog.json"); + logFile.AutoFlush = true; + writer = new JsonTextWriter(logFile); + writer.Formatting = Formatting.Indented; + writer.WriteStartObject(); + writer.WritePropertyName("Operations"); + writer.WriteStartArray(); + } + public double DoOperation(double num1, double num2, string op) + { + double result = double.NaN; + writer.WriteStartObject(); + writer.WritePropertyName("Operand1"); + writer.WriteValue(num1); + writer.WritePropertyName("Operand2"); + writer.WriteValue(num2); + writer.WritePropertyName("Operation"); + + switch (op) + { + case "+": + result = num1 + num2; + writer.WriteValue("Add"); + break; + case "-": + result = num1 - num2; + writer.WriteValue("Subtract"); + break; + case "*": + result = num1 * num2; + writer.WriteValue("Multiply"); + break; + case "/": + if (num2 != 0) + { + result = num1 / num2; + writer.WriteValue("Divide"); + } + break; + } + + writer.WritePropertyName("Result"); + writer.WriteValue(result); + writer.WriteEndObject(); + return result; + } + + public void Finish() + { + writer.WriteEndArray(); + writer.WriteEndObject(); + writer.Close(); + } + } + +} diff --git a/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.csproj b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.csproj new file mode 100644 index 00000000..22badd14 --- /dev/null +++ b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.csproj @@ -0,0 +1,13 @@ + + + + net10.0 + enable + enable + + + + + + + From c31110e57763fe8e781a47508fb648b3faf12373 Mon Sep 17 00:00:00 2001 From: SGGStudios Date: Fri, 4 Sep 2026 16:45:16 +0200 Subject: [PATCH 2/2] Fixed folder name, re-commit for review. --- .../CalculatorLibrary/CalculatorLibrary.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs index e1757ea8..bac467f1 100644 --- a/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs +++ b/Calculator.Cybernexus-code/CalculatorLibrary/CalculatorLibrary.cs @@ -46,7 +46,7 @@ public double DoOperation(double num1, double num2, string op) writer.WriteValue("Divide"); } break; - } + } writer.WritePropertyName("Result"); writer.WriteValue(result);