static void Main(string[] args) { var parser = new InputParser(); var checker = new InputChecker(); var converter = new RpnConverter(checker); var counter = new RpnCounter(); var calculator = new RpnCalculator(parser, converter, counter); Console.WriteLine("CONSOLE CALCULATOR"); Console.WriteLine("You can enter numbers and symbols + - * / ^ ( )."); Console.WriteLine("Press enter key to calculate."); Console.WriteLine("Enter 'q' key to exit."); while (true) { Console.Write("Enter expression > "); string input = Console.ReadLine(); if ("q".Equals(input, StringComparison.OrdinalIgnoreCase)) { break; } try { double result = calculator.Calculate(input); Console.WriteLine($"Result is {result}"); } catch (Exception) { Console.WriteLine("Incorrect input"); } } }
public void CountShouldReturn3Dot5() { // 3 + 4 * 2 / (1 - 5)^2 = 3.5 // 3 4 2 * 1 5 - 2 ^ / + var input = new[] { InputCell.Number(3), InputCell.Number(4), InputCell.Number(2), InputCell.Symbol("*"), InputCell.Number(1), InputCell.Number(5), InputCell.Symbol("-"), InputCell.Number(2), InputCell.Symbol("^"), InputCell.Symbol("/"), InputCell.Symbol("+") }; var result = new RpnCounter().Count(input); Assert.AreEqual(3.5, result); }
public RpnCalculator(InputParser parser, RpnConverter converter, RpnCounter counter) { _parser = parser; _converter = converter; _counter = counter; }