static void Main(string[] args) { var calc = new CalcString(new PolishNotationConvertor()); calc.Operators.Add(new Operator('^', (a) => Math.Pow(a[0], a[1]), 2, Priority.Highest)); //Пример добавления нового оператора calc.Operators.Add(new Operator('%', (a) => a[0] % a[1], 2, Priority.Highest)); calc.Operators.Add(new Operator('s', (a) => Math.Sqrt(a[0]), 1, Priority.Highest)); //Добавление унарного оператора Console.Write("Введите строку для расчета. Для выхода введите \"exit\".\n> "); string s = Console.ReadLine(); while (s.ToLower() != "exit") { try { Console.WriteLine("> " + calc.Calculate(s)); } catch (Exception ex) { Console.WriteLine("Ошибка: " + ex.Message); } Console.Write("> "); s = Console.ReadLine(); } }
public void CalculateMethodBaseOperationTest() { Assert.AreEqual(5, calc.Calculate("3+2")); Assert.AreEqual(1, calc.Calculate("3-2")); Assert.AreEqual(6, calc.Calculate("3*2")); Assert.AreEqual(1.5, calc.Calculate("3/2")); }