Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- namespace WykopowyKalkulator1
- {
- internal static class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Write 'exit' to exit xD");
- Console.WriteLine("Value1 operation Value2 i.e.");
- Console.WriteLine("50 / 50");
- while (true)
- {
- Console.WriteLine("Enter calculation:");
- var read = Console.ReadLine();
- if (read != null && read.Equals("exit", StringComparison.OrdinalIgnoreCase))
- {
- Console.WriteLine("Elo");
- break;
- }
- var values = read?.Split(' ').Select(e => e.Trim()).ToArray();
- if (values == null) continue;
- var calculator = new CalculatorEngine<int>(
- values[1],
- int.Parse(values[0]),
- int.Parse(values[2]));
- try
- {
- Console.WriteLine(calculator.Calculate());
- }
- catch (DivideByZeroException)
- {
- Console.WriteLine("Nie dziel cholero przez zero.");
- }
- }
- }
- }
- public class CalculatorEngine<T>
- {
- private readonly Operations _operation;
- private readonly T _x;
- private readonly T _y;
- private enum Operations
- {
- Add,
- Subtract,
- Multiply,
- Divide
- }
- private CalculatorEngine(Operations operation, T x, T y)
- {
- _operation = operation;
- _x = x;
- _y = y;
- }
- public CalculatorEngine(string operation, T x, T y) : this(ConvertOperation(operation), x, y)
- {
- }
- public T Calculate()
- {
- return (T) CalculateDynamic();
- }
- private dynamic CalculateDynamic()
- {
- dynamic x = _x;
- dynamic y = _y;
- switch (_operation)
- {
- case Operations.Add:
- return x + y;
- case Operations.Subtract:
- return x - y;
- case Operations.Multiply:
- return x * y;
- case Operations.Divide:
- return x / y;
- default:
- throw new ArgumentOutOfRangeException(nameof(_operation), _operation, null);
- }
- }
- private static Operations ConvertOperation(string userInput)
- {
- if (userInput.Equals("add", StringComparison.OrdinalIgnoreCase)
- || userInput.Equals("+", StringComparison.OrdinalIgnoreCase))
- return Operations.Add;
- if (userInput.Equals("subtract", StringComparison.OrdinalIgnoreCase)
- || userInput.Equals("-", StringComparison.OrdinalIgnoreCase))
- return Operations.Subtract;
- if (userInput.Equals("multiply", StringComparison.OrdinalIgnoreCase)
- || userInput.Equals("*", StringComparison.OrdinalIgnoreCase)
- || userInput.Equals("x", StringComparison.OrdinalIgnoreCase))
- return Operations.Multiply;
- if (userInput.Equals("divide", StringComparison.OrdinalIgnoreCase)
- || userInput.Equals("/", StringComparison.OrdinalIgnoreCase))
- return Operations.Divide;
- throw new Exception("Co do ch**");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement