public void Check() { Assert.Equal(new List <string>() { "1", "1", "+", "1", "-" }, ReversePolishNotation.Parse("1+1-1")); }
private void Calculate_button_Click(object sender, RoutedEventArgs e) { try { System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; double result = 0.0; var rpn = new ReversePolishNotation(); rpn.Parse(Expression_textBox.Text.Replace(',', '.')); result = rpn.Evaluate(); var output = new StringBuilder(); output.AppendFormat("Original: {0}", rpn.OriginalExpression + Environment.NewLine); output.AppendFormat("Transition: {0}", rpn.TransitionExpression + Environment.NewLine); output.AppendFormat("Postfix: {0}", rpn.PostfixExpression + Environment.NewLine); output.AppendFormat("Result: {0}", result); Results_textBox.Text = output.ToString(); } catch (Exception ex) { Results_textBox.Text = ex.Message; } }
static void Main() { Console.Write("Введите диапазон значений x по образцу (0 10): "); double[] rangeX = ReadInput(); Console.Write("Введите шаг построения функции: "); double[] step = ReadInput(); string path = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); string inputFile = @"\input.txt"; string outputFile = @"\output.txt"; WorkWithFiles workWithFiles = new WorkWithFiles(); if (!File.Exists(path + inputFile)) { workWithFiles.WriteTextToFile(path, inputFile, "log(15^x^x - 25,5 + 5! * 43 - (7 * 5)) * cos(5) - 1"); } ReversePolishNotation reversePolishNotation = new ReversePolishNotation(); List <string> textExpression = workWithFiles.ReadTextFromFile(path, inputFile); List <object> parseExpression = reversePolishNotation.Parse(textExpression); foreach (var item in parseExpression) { Console.WriteLine(item); } ; TableOfFunctionValues tableOfFunctionValues = new TableOfFunctionValues(); string finalText = tableOfFunctionValues.CreatingTable(rangeX, step[1], parseExpression); workWithFiles.WriteTextToFile(path, outputFile, finalText); }
public static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; double result = 0.0; ReversePolishNotation rpn = new ReversePolishNotation(); // rpn.Parse("pow(2, 3.14) * (3 - (3 * sqrt(2) - 3.2) + 1.5*0.3)"); rpn.Parse("(3+5.3) * 2.7 - ln(22) / pow(2.2, -1.7)"); result = rpn.Evaluate(); Console.WriteLine("orig: {0}", rpn.OriginalExpression); Console.WriteLine("tran: {0}", rpn.TransitionExpression); Console.WriteLine("post: {0}", rpn.PostfixExpression); Console.WriteLine("result: {0}", result); }
static void Main(string[] args) { Console.Write("Enter an expression: "); string expression = Console.ReadLine(); try { ReversePolishNotation rpn = new ReversePolishNotation(); rpn.Parse(expression); Console.WriteLine("Result: {0}", rpn.Evaluate()); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public void Check(string input, double expected) { Assert.Equal(expected, ReversePolishNotation.Calculate(ReversePolishNotation.Parse(input))); }