public void Run() { string expression; ShowHelp(); while ((expression = AskForInput()) != "") { try { NotationConverter converter = new NotationConverter(expression); converter.Convert(); calculator.Calculate(converter.PolishNotation); ShowResult(); } catch (InvalidExpressionException ex) { Console.WriteLine(ex.Message); } catch (DivideByZeroException ex) { Console.WriteLine(ex.Message); } } }
private float GetExpressionResult(string infix) { NotationConverter converter = new NotationConverter(infix); converter.Convert(); calc.Calculate(converter.PolishNotation); return(calc.Result); }
public void CorrectUnaryMinus() { NotationConverter converter = new NotationConverter("-4"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "4", "_" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectDifferenceOf2Numbers() { NotationConverter converter = new NotationConverter("41-5"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "41", "5", "-" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectDivisionOf2Numbers() { NotationConverter converter = new NotationConverter("4/31"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "4", "31", "/" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectCommaProcessing() { NotationConverter converter = new NotationConverter("pow((3 ) ,(3))"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "3", "3", "pow" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectSumOf2Digits() { NotationConverter converter = new NotationConverter("4+5"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "4", "5", "+" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectWorkWithMultiplyFunctionsAndOperatorsInPow() { NotationConverter converter = new NotationConverter("pow(cos(1) + pow(2 + 3, 2), sin(5))"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "1", "cos", "2", "3", "+", "2", "pow", "+", "5", "sin", "pow" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectWorkIfMultiplyFunctions() { NotationConverter converter = new NotationConverter("sin(pow(5, -cos(3)))"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "5", "3", "cos", "_", "pow", "sin" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectWorkWithDifferentPriorities() { NotationConverter converter = new NotationConverter("-4+5*6+1/2*3+7"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "4", "_", "5", "6", "*", "+", "1", "2", "/", "3", "*", "+", "7", "+" }); CollectionAssert.AreEqual(result, expected); }
public void CorrectSumOfManyNumbers() { NotationConverter converter = new NotationConverter("4+5+6+1+2+3+7"); converter.Convert(); var result = converter.PolishNotation; var expected = PushToStack(new string[] { "4", "5", "+", "6", "+", "1", "+", "2", "+", "3", "+", "7", "+" }); CollectionAssert.AreEqual(result, expected); }
public void ThrowsExeptionIfIncorrectBracket2() { NotationConverter converter = new NotationConverter("()("); converter.Convert(); }